@revturbine/sdk 0.2.84 → 0.2.85

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.
package/dist/server.js ADDED
@@ -0,0 +1,3 @@
1
+ import {z as z$1}from'zod';var ZS=Object.defineProperty;var tg=n=>{throw TypeError(n)};var YS=(n,e,t)=>e in n?ZS(n,e,{enumerable:true,configurable:true,writable:true,value:t}):n[e]=t;var k=(n,e,t)=>YS(n,typeof e!="symbol"?e+"":e,t),ng=(n,e,t)=>e.has(n)||tg("Cannot "+t);var Vl=(n,e,t)=>(ng(n,e,"read from private field"),t?t.call(n):e.get(n)),Id=(n,e,t)=>e.has(n)?tg("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),Pd=(n,e,t,r)=>(ng(n,e,"write to private field"),e.set(n,t),t);var fm=864e5,WS=75;function XS(n,e){return n==="converted"||n==="cancelled"?n:e&&n==="active"?"expired":n}function JS(n,e){return n==="expired"?"expired":n==="converted"?"converted":n==="cancelled"?"expired":n==="not_started"?"none":e>=WS?"running_out":"active"}function QS(n,e,t){let r=Math.max(0,e-n),i=Math.max(0,t-n),s=Math.max(0,e-t),a=Math.max(1,Math.round(r/fm)),o=Math.min(a,Math.floor(i/fm)),p=Math.max(0,Math.ceil(s/fm)),v=Math.min(100,Math.max(0,i/Math.max(1,r)*100));return {isExpiredByBounds:t>=e,dayNumber:o,daysRemaining:p,daysTotal:a,progressPercent:v}}function eI(n,e){let t=Math.max(1,e),r=Math.max(0,n),i=Math.max(0,t-r),s=Math.min(100,Math.max(0,r/t*100));return {isExpiredByBounds:r>=t,usageConsumed:r,usageRemaining:i,usageLimit:t,progressPercent:s}}function hm(n){let{instance:e,rule:t,nowIso:r,basePlanHandle:i,usageBalances:s}=n,a=Date.parse(e.started_at),o=Date.parse(r);if(Number.isNaN(a)||Number.isNaN(o)||e.status==="not_started"||o<a)return;let p=e.trial_limit_type??"time",v=0,l=false,x,I,C,S,V,G;if(p==="usage"){let ie=e.usage_entitlement_handle??(t&&"usage_entitlement_handle"in t?t.usage_entitlement_handle:void 0),Ot=e.usage_limit_value??(t&&"usage_limit_value"in t?t.usage_limit_value:void 0);if(typeof ie!="string"||typeof Ot!="number"||Ot<1)return;let Qt=s?.[ie]??0,ar=eI(Qt,Ot);v=ar.progressPercent,l=ar.isExpiredByBounds,C=ar.usageConsumed,S=ar.usageRemaining,V=ar.usageLimit,G=ie;}else {let ie=e.expires_at?Date.parse(e.expires_at):Number.NaN;if(Number.isNaN(ie))return;let Ot=QS(a,ie,o);v=Ot.progressPercent,l=Ot.isExpiredByBounds,x=Ot.dayNumber,I=Ot.daysRemaining;}let re=XS(e.status,l),Re=JS(re,v),we;e.rule_type==="reverse_trial"?we=i:e.rule_type==="free_trial"&&t&&"plan_id"in t&&typeof t.plan_id=="string"&&(we=t.plan_id);let ke=e.rule_type==="reverse_trial"?"reverse":"free";return {in_trial:re==="active",trial_type:ke,...we!==void 0?{plan_handle:we}:{},state:Re,trial_limit_type:p,progress_percent:v,...x!==void 0?{day_number:x}:{},...I!==void 0?{days_remaining:I}:{},...G!==void 0?{usage_entitlement_handle:G}:{},...C!==void 0?{usage_consumed:C}:{},...S!==void 0?{usage_remaining:S}:{},...V!==void 0?{usage_limit:V}:{}}}function rg(n,e){return n.rule_type!=="reverse_trial"||n.rule_id!==e.id||!e.entitlements_during_trial||e.entitlements_during_trial.length===0?null:{trialGrantedEntitlementHandles:new Set(e.entitlements_during_trial),effectivePlanHandle:e.premium_plan_id}}function ig(n,e){let t=Date.parse(e);if(Number.isNaN(t))return;let r,i=-1/0;for(let s of n){if(s.status!=="active"&&s.status!=="expired"&&s.status!=="converted")continue;let a=Date.parse(s.started_at);Number.isNaN(a)||t<a||a>i&&(r=s,i=a);}return r}function gm(n){let{freeTrialRules:e,reverseTrialRules:t,instances:r,nowIso:i,usageBalances:s,basePlanHandle:a}=n,o=ig(r,i);if(!o)return {trial:void 0,reverseGrants:null};if(o.rule_type==="reverse_trial"){let l=(t??[]).find(C=>C.id===o.rule_id),x=hm({instance:o,...l!==void 0?{rule:l}:{},nowIso:i,...a!==void 0?{basePlanHandle:a}:{},...s!==void 0?{usageBalances:s}:{}}),I=l!==void 0?rg(o,l):null;return {trial:x,reverseGrants:I}}let p=(e??[]).find(l=>l.id===o.rule_id);return {trial:hm({instance:o,...p!==void 0?{rule:p}:{},nowIso:i,...a!==void 0?{basePlanHandle:a}:{},...s!==void 0?{usageBalances:s}:{}}),reverseGrants:null}}function Se(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function Ul(n){return Array.isArray(n)?n.filter(e=>e.trim().length>0):[]}function Dn(...n){for(let e of n)if(typeof e=="string"&&e.trim().length>0)return e}function _n(n){if(typeof n=="number"&&Number.isFinite(n))return n;if(typeof n=="string"){let e=Number(n);return Number.isFinite(e)?e:null}return null}function ro(n){return n.trim().toLowerCase().replace(/\/+$/,"")||"/"}function _m(n,e){return String(n||"").trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||`slot-${e??"unknown"}`}function Bl(n){let e=String(n||"").trim().toLowerCase().replace(/\s+/g,"_").replace(/-+/g,"_");if(!e)return "unknown_event";switch(e){case "pageview":case "page_view":return "clickstream_page_view";case "click":return "clickstream_click";case "doc_view":return "clickstream_doc_view";case "checkout_started":return "clickstream_checkout_started";case "checkout_completed":return "clickstream_checkout_completed";case "payment_failed":return "clickstream_payment_failed";default:return e}}function bm(n){if(!Se(n))return null;let e=Number(n.count),t=typeof n.period=="string"?n.period:"";return !Number.isFinite(e)||e<=0||t!=="session"&&t!=="day"&&t!=="week"&&t!=="month"&&t!=="lifetime"?null:{count:e,period:t}}function vm(n){let e=n.split("::");return {slotId:e[0]||"",surfaceType:e[1]||"",entitlementHandle:e[2]||"",planHandle:e[3]||"",placementHandle:e[4]||""}}function sg(n){let e=n.trim().toLowerCase();return e?e==="starter"||e==="free"?["starter","free"]:e==="professional"||e==="pro"?["professional","pro"]:e==="enterprise"?["enterprise"]:[e]:[]}function ag(n){let e=n,t=Se(e.target)?e.target:void 0,r=Array.isArray(t?.plan_ids)?t.plan_ids.filter(a=>typeof a=="string"):[];if(r.length>0)return r;let i=Se(n.content)?n.content:{};return Array.isArray(i.__target_plan_ids)?i.__target_plan_ids.filter(a=>typeof a=="string"):[]}function ym(n,e){let t=ag(n);if(t.length===0||!e)return true;let r=sg(e);return r.length===0?true:t.some(i=>{let s=i.toLowerCase();return r.some(a=>s===a||s.endsWith(`_${a}`)||s.includes(a))})}function xm(n,e){if(e.length===0)return null;let t=[...e].sort((i,s)=>i.tier_position!==s.tier_position?i.tier_position-s.tier_position:i.sort_order!==s.sort_order?i.sort_order-s.sort_order:i.source_id.localeCompare(s.source_id)),r=t.findIndex(i=>i.unique_handle===n);return r===-1||r===t.length-1?null:t[r+1].unique_handle}function io(n){return n.replace(/_(minutes|minute|credits|credit|seats|seat)$/i,"").replace(/_usage$/i,"").trim().toLowerCase()}function Sm(n){return n.trim().toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9_]/g,"")}function Im(n){return n==="minutes"||n==="minute"||n==="credits"||n==="credit"||n==="seats"||n==="seat"||n==="units"||n==="unit"}function Ts(n){if(!n)return {};let e={};for(let[t,r]of Object.entries(n))Se(r)&&typeof r.amount=="number"?e[t]=r.amount:typeof r=="number"&&(e[t]=r);return e}function Ca(n,e){if(!n||!Array.isArray(n.plans))return;let t;if(typeof e=="string"&&e.trim().length>0?t=e.trim():Se(e)&&typeof e.id=="string"&&e.id.trim().length>0&&(t=e.id.trim()),!t)return;let r=t.toLowerCase();for(let i of n.plans){if(!Se(i))continue;if((typeof i.unique_handle=="string"?i.unique_handle.toLowerCase():"")===r){let a=typeof i.name=="string"?i.name.trim():"";if(a.length>0)return a}}}function Td(n){let e=n;return typeof e.format_version=="string"?e.format_version:typeof e.version=="string"?e.version:""}function Zs(n){let e=String(n||"").trim().toLowerCase();return e?e.includes("gated")||e.includes("entitlement")?0:e.includes("fixed")?1:e.includes("usage")||e.includes("credit")||e.includes("seat")||e.includes("quota")||e.includes("trial")?2:e.includes("conversion")||e.includes("expansion")||e.includes("upsell")||e.includes("retention")||e.includes("winback")||e.includes("churn")?4:99:99}function ql(n){let e=n,t=Se(n.content)?n.content:{};return [_n(e.score),_n(e.ltv_propensity_score),_n(t.score),_n(t.ltv_propensity_score),_n(t.ranking_score)].find(i=>i!==null)??0}function Cd(n){let e=n,t=Se(n.content)?n.content:{};return [_n(e.priority),_n(e.placement_priority),_n(t.priority),_n(t.placement_priority)].find(i=>i!==null)??0}function Pm(n){let e=Se(n.content)?n.content:{};return [_n(e.usage_percent),_n(e.trial_percent_elapsed),_n(e.threshold_percent)].find(r=>r!==null)??ql(n)}var tI=new Set(["trial_started","trial_ended","trial_converted"]),nI=new Set(["trial_progress","trial_ending"]);function Tm(n){let e=Se(n.content)?n.content:{},t=typeof e.__trigger_kind=="string"?e.__trigger_kind:void 0;if(t&&tI.has(t))return 1;if(t&&nI.has(t))return 3;let r=[_n(e.usage_percent),_n(e.threshold_percent)].find(i=>i!==null);return r!=null&&r>=100?2:3}function Dl(n){let e=n,t=Se(n.content)?n.content:{};return [_n(e.server_order),_n(e.order),_n(e.rank),_n(e.order_index),_n(t.server_order),_n(t.order),_n(t.rank),_n(t.order_index)].find(i=>i!==null)??null}function Cm(n){let e=Se(n.content)?n.content:{},t=e.template_version;if(typeof t=="string"&&t.trim().length>0)return t.trim();let r=_n(t);if(r!==null)return String(r);let i=e.milestone_version;if(typeof i=="string"&&i.trim().length>0)return i.trim();let s=_n(i);return s!==null?String(s):null}function km(n){let t=(Se(n.content)?n.content:{}).supersedes_template_version;if(Array.isArray(t))return t.map(i=>typeof i=="string"?i.trim():_n(i)).filter(i=>i!==null&&i!=="").map(i=>String(i));if(typeof t=="string"&&t.trim().length>0)return [t.trim()];let r=_n(t);return r!==null?[String(r)]:[]}function Ps(n){return n==null||typeof n!="object"?JSON.stringify(n):Array.isArray(n)?`[${n.map(t=>Ps(t)).join(",")}]`:`{${Object.entries(n).sort(([t],[r])=>t.localeCompare(r)).map(([t,r])=>`${JSON.stringify(t)}:${Ps(r)}`).join(",")}}`}function Rm(n){return Se(n)?{in_trial:typeof n.in_trial=="boolean"?n.in_trial:false,...typeof n.trial_type=="string"?{trial_type:n.trial_type}:{},...typeof n.plan_handle=="string"?{plan_handle:n.plan_handle}:{},...typeof n.day_number=="number"?{day_number:n.day_number}:{},...typeof n.days_remaining=="number"?{days_remaining:n.days_remaining}:{}}:{in_trial:false}}var iI=/^[a-z0-9._]{1,100}$/,Ys={Persisted:"persisted",Transient:"transient"},Wi={Internal:"internal",External:"external"},ji={Financial:{"x-revturbine-data-classification":"financial"},Unrestricted:{"x-revturbine-data-classification":"unrestricted"},Operational:{"x-revturbine-data-classification":"operational"}},sI="readOnly";function Jr(n){let e={};for(let[t,r]of Object.entries(n.shape)){if(typeof r!="object"||r===null)continue;r.meta()?.[sI]===true||(e[t]=r);}return z$1.object(e)}function Tr(n){let e=Jr(n),t=e.shape.handle;return t&&typeof t.regex=="function"?e.extend({handle:t.regex(iI)}):e}var {Unrestricted:Br}=ji,{Transient:qr,Persisted:oI}=Ys,{Internal:ka,External:Cs}=Wi;z$1.object({page:z$1.coerce.number().int().min(1).default(1).meta(Br),per_page:z$1.coerce.number().int().min(1).max(100).default(25).meta(Br)}).meta({id:"PaginationParams","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":Cs});var kn=z$1.object({created_at:z$1.string().datetime().meta({...Br,readOnly:true}),updated_at:z$1.string().datetime().meta({...Br,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":Cs}),bn=z$1.object({id:z$1.string().min(1).meta({...Br,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":Cs}),Rn=z$1.object({tenant_id:z$1.string().min(1,"tenant_id is required").meta({...Br,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":ka});z$1.enum(["monthly","annual","quarterly","one_time","usage_based"]).meta({id:"BillingCadence","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":Cs});var Em=z$1.enum(["banner","modal","tooltip","sidebar","inline","toast","fullscreen","email","sms","push","in_page","button","full_page","agent","cli","custom"]).meta({id:"SurfaceType","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":Cs}),lg=["allowed","limited","denied"];z$1.enum(["presented","clicked","converted","dismissed","reminded","suppressed"]).meta({id:"PresentationOutcome","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":Cs});var kd=z$1.enum(["feature","capability_tier","usage_limit","price_per_unit","rate_limit","credits","seat"]).meta({id:"EntitlementType","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":Cs}),cg=z$1.enum(["usd","eur","gbp"]).default("usd").meta({id:"Currency","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":Cs});z$1.union([z$1.boolean(),z$1.number(),z$1.string()]).meta({id:"FeatureFlagValue","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":ka});var ks=z$1.string().min(1).max(200),Jn=z$1.string().min(1).max(100),Rd=z$1.string().max(500).optional(),ci=z$1.record(z$1.string(),z$1.unknown()).default({}),Ra=z$1.number().int().min(10).max(100).multipleOf(10),Ed=z$1.string().datetime().nullable().default(null),$n=z$1.object({environment_id:z$1.string().min(1).default("production").meta({...Br,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":ka}),Qn=z$1.object({playbook_version_id:z$1.string().nullable().default(null).meta(Br),is_current:z$1.boolean().default(true).meta({...Br,readOnly:true}),is_deleted:z$1.boolean().default(false).meta({...Br,readOnly:true}),delete_date:z$1.string().datetime().nullable().default(null).meta({...Br,readOnly:true}),sequence:z$1.number().int().min(1).default(1).meta({...Br,readOnly:true}),base_sequence:z$1.number().int().nullable().default(null).meta({...Br,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":ka}),lI=bn.merge(kn).merge(Rn).merge($n).extend({handle:Jn.meta({...Br,readOnly:true}),active:z$1.boolean().default(true).meta({...Br,readOnly:true})});function Cr(n){return lI.meta({id:n,"x-revturbine-schema-persistence":oI,"x-revturbine-schema-exposure":ka})}z$1.enum(["info","warning","critical"]).meta({id:"Severity","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":ka});z$1.enum(["button","plans_page_ctas","plans_page_full","inline_gate_message","tooltip","in_page_card","usage_counter","credit_counter","trial_counter","banner","modal_optional","modal_blocking","toast","email","sms","push","cli","agent_connector","custom_in_app"]).meta({id:"StudioSurfaceType","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":ka});var dg=z$1.enum(["open_checkout","view_plans","book_demo","contact_sales","complete_onboarding","invite_teammate","refer_friend","verify_work_email","update_payment_method","enable_auto_renewal","manage_subscription","switch_billing_period","extend_trial","open_rt_placement","dismiss","snooze","custom"]).meta({id:"CtaActionType","x-revturbine-schema-persistence":qr,"x-revturbine-schema-exposure":Cs}),cI=new Set(Em.options);function wd(n,e){if(!Se(n))return null;let t=typeof n.output_id=="string"?n.output_id:"";if(!t)return null;let r=Se(n.surface)?n.surface:{},i=cI.has(r.type)?r.type:"custom",s=Se(n.cta_path)?n.cta_path:Se(n.ui_path)?n.ui_path:{};return {output_id:t,category:typeof n.category=="string"?n.category:"unknown",surface:{...typeof r.template=="string"?{template:r.template}:{},type:i,...typeof r.slot_id=="string"?{slot_id:r.slot_id}:{}},content:Se(n.content)?n.content:{},...Se(n.promotion)?{promotion:n.promotion}:{},cta_path:s,ui_path:s,rule_id:typeof n.rule_id=="string"?n.rule_id:"",decision_id:typeof n.decision_id=="string"?n.decision_id:e(),config_version:typeof n.config_version=="string"?n.config_version:"unknown",present_upsell:typeof n.present_upsell=="boolean"?n.present_upsell:false}}var dI="__no_dim__";function pg(n,e,t){if(n.length===0)return true;let r=e instanceof Set?e:new Set(e),i=new Map;for(let s of n){let a=t(s)??dI,o=i.get(a)??[];o.push(s),i.set(a,o);}for(let s of i.values())if(!s.some(a=>r.has(a)))return false;return true}var uI=999999;function mI(n){return n==null||n==="unlimited"||n===uI}function Ml(n){return mI(n)?Number.POSITIVE_INFINITY:typeof n=="number"&&Number.isFinite(n)?n:void 0}function pI(n,e){switch(n.kind){case "plan":return e.currentPlanId!=null&&n.id===e.currentPlanId||e.currentPlanHandle!=null&&n.id===e.currentPlanHandle;case "plan_variation":return e.currentPlanVariationId!=null&&n.id===e.currentPlanVariationId;case "addon":return e.addonIds?.includes(n.id)??false;case "addon_variation":return e.addonVariationIds?.includes(n.id)??false;default:return false}}function fg(n,e,t){return n.map(r=>{let i=r.targets!=null&&r.targets.length>0?r.targets.some(a=>pI(a,e)):e.currentPlanId!=null&&r.planIds.includes(e.currentPlanId)||e.currentPlanHandle!=null&&r.planIds.includes(e.currentPlanHandle),s=pg(r.segmentIds,e.segmentIds,a=>t?.[a]);return {rule:r,matchesPlan:i,matchesSegment:s,matched:i&&s}})}function hg(n){let e=n.fields??{};switch(n.kind){case "usage_limit":return Ml(e.limit_value)??0;case "credits":return Ml(e.allowance_value!==void 0?e.allowance_value:e.allowance)??0;case "seat":return Ml(e.included_count)??0;case "feature":return e.enabled===true?1:0;default:return 0}}function gg(n,e){let t,r=Number.NEGATIVE_INFINITY;for(let i of n){let s=e(i);(t===void 0||s>r)&&(t=i,r=s);}return t}function fI(n){return gg(n,e=>hg(e.rule))?.rule}function wm(n,e,t){let r=n.entitlementRules[e];if(!r||r.length===0)return;let i=fg(r,t,n.segmentDimensions);return fI(i.filter(s=>s.matched))}function hI(n){let e=n.segment_ids;if(Array.isArray(e))return e.filter(r=>typeof r=="string");let t=n.segment_id??n.segmentId;return typeof t=="string"&&t!=="all"?[t]:[]}function gI(n,e,t){let r=new Map;for(let i of t)typeof i.handle=="string"&&r.set(i.handle,typeof i.dimension_id=="string"?i.dimension_id:void 0);return pg(hI(n),e,i=>r.get(i))}function ug(n,e,t){if(!n)return {status:"allowed",allowed:true};switch(e){case "hard_block":return {status:"denied",allowed:false,reason:t};case "soft_block":return {status:"denied",allowed:false,reason:`${t}_soft_block`};case "degrade":return {status:"limited",allowed:true,reason:`${t}_degraded`};case "allow_overage":return {status:"allowed",allowed:true,reason:`${t}_overage`};default:return {status:"limited",allowed:false,reason:t}}}function Nl(n){let{handle:e,context:t,exportedConfig:r,currentPlanHandle:i,segmentIds:s,usageBalances:a,userUsage:o,trialGrantedEntitlementHandles:p,effectivePlanHandle:v}=n,x=(r.entitlements??[]).find(vt=>typeof vt?.unique_handle=="string"&&vt.unique_handle===e),I=typeof x?.unique_handle=="string"?x.unique_handle:e,C=typeof x?.unique_handle=="string"?x.unique_handle:void 0,S=!!(p&&p.size>0&&(p.has(e)||p.has(I)||C!==void 0&&p.has(C)));if(S&&(v===void 0||v===""))return {status:"allowed",allowed:true,reason:"granted_by_reverse_trial"};let G=String((S&&v?v:i)||"").toLowerCase(),Re=(r.plans??[]).find(vt=>typeof vt.unique_handle=="string"&&vt.unique_handle.toLowerCase()===G),we=typeof Re?.unique_handle=="string"?Re.unique_handle:G||void 0,ie=(r.entitlement_rules??[]).filter(vt=>{if((typeof vt.entitlement_id=="string"?vt.entitlement_id:typeof vt.entitlementId=="string"?vt.entitlementId:"")!==I)return false;let Vr=Array.isArray(vt.targets)?vt.targets.filter(Et=>Se(Et)&&Et.kind==="plan"&&typeof Et.id=="string").map(Et=>Et.id):Array.isArray(vt.plan_ids)?vt.plan_ids.filter(Et=>typeof Et=="string"):Array.isArray(vt.planIds)?vt.planIds.filter(Et=>typeof Et=="string"):[];return !(we!==void 0&&!Vr.includes(we)||!gI(vt,s,r.segments??[]))});if(ie.length===0)return {status:"denied",allowed:false,reason:"no_matching_entitlement_rule"};let Ot=(()=>{let vt=(r.entitlements??[]).find(Cn=>Cn.unique_handle===I);return vt&&typeof vt.type=="string"?vt.type:void 0})(),Qt=vt=>{let Cn=Se(vt)?vt:{},Et={...Se(Cn.type_fields)?Cn.type_fields:Se(Cn.typeFields)?Cn.typeFields:{},...Cn};return typeof Et.kind!="string"&&Ot&&(Et.kind=Ot),Et},ar=gg(ie,vt=>{let Cn=Qt(vt);return hg({kind:typeof Cn.kind=="string"?Cn.kind:"",fields:Cn})})??ie[0],J=Qt(ar);typeof J.kind=="string"?J.kind:void 0;let an=vt=>{let Cn=o?.[vt];if(Se(Cn)&&typeof Cn.amount=="number")return Cn.amount},nn=t?.used??(Number.isFinite(a[e])?a[e]:void 0)??(Number.isFinite(a[I])?a[I]:void 0)??an(e)??an(I)??0;return Od(J,nn)}function mg(n,e,t){return {...n,limit:e,used:t,remaining:Math.max(0,e-t)}}function _g(n){return n==="feature"||n==="usage_limit"||n==="limit"||n==="credits"||n==="capability_tier"}function Od(n,e){let t=typeof n.kind=="string"?n.kind:void 0;if(t==="feature"){let r=n.enabled!==false;return {status:r?"allowed":"denied",allowed:r,reason:r?void 0:"feature_not_enabled_for_plan"}}if(t==="usage_limit"||t==="limit"){let r=Ml(n.limit_value);return r!==void 0&&Number.isFinite(r)&&r>=0?mg(ug(e>=r,n.enforcement,"usage_limit_reached"),r,e):{status:"allowed",allowed:true}}if(t==="credits"){let r=n.allowance_value!==void 0?n.allowance_value:n.allowance,i=r===void 0?void 0:Ml(r),s=Number(n.initial_grant),a=i!==void 0&&i>=0?i:Number.isFinite(s)&&s>=0?s:void 0;return a!==void 0&&Number.isFinite(a)?mg(ug(e>=a,n.enforcement,"credit_balance_exhausted"),a,e):{status:"allowed",allowed:true}}if(t==="capability_tier"){let r=typeof n.tier_name=="string"?n.tier_name:void 0;return {status:"allowed",allowed:true,...r?{current_tier:r}:{}}}return {status:"allowed",allowed:true}}function Om(n,e,t,r,i=80){let s=e.get(n);if(s)return s;if(t.get(n)?.status==="limited"&&Number.isFinite(r[n])){let o=Number(r[n]);if(o>0)return {limit:o,warningPercent:i}}return null}var _I=0;function bI(){return `core_${Date.now()}_${++_I}`}function bg(n,e,t){return {header:n,body:e,cta_label:t,title:n,cta:t}}var vg=class{constructor(n){this.registry=n.registry,this.interactionTracker=n.interactionTracker,this.capEnforcer=n.capEnforcer,this.options=n.options??{},this.placements=n.placements??new Map,this.placementResolver=n.placementResolver;}async evaluate(n){let e=bI(),t=this.placements.get(n.placementId);if(this.interactionTracker){let s=this.interactionTracker.checkSuppression(n.placementId,n.userId);if(s.suppressed)return {placementId:n.placementId,requestId:e,visible:false,decisionSource:"cache",reasonCodes:s.reason?[s.reason]:[],suppressionReason:s.reason,content:bg(`${t?.name??n.placementId} suppressed`,"Suppressed due to recent interaction state.","Continue")}}let i={__providers:await this.registry.resolveAll()};if(n.traits&&(i.traits=n.traits),this.placementResolver){let s=await this.placementResolver(n,t,i);if(s.visible&&s.output&&this.capEnforcer&&this.options.enableCapsEnforcement!==false){let a=this.capEnforcer.enforce(s.output);if(!a.allowed)return {...s,visible:false,reasonCodes:[...s.reasonCodes,a.reason??"suppressed_by_cap"],suppressionReason:a.reason}}return s}return {placementId:n.placementId,requestId:e,visible:false,decisionSource:"fallback",reasonCodes:["no_resolver_configured"],content:bg("No resolver","No placement resolver configured.","")}}async evaluateBatch(n){return Promise.all(n.map(e=>this.evaluate(e)))}async checkEntitlement(n,e){let t=await this.registry.resolveAll();return this.deriveEntitlementResult(n,t,e)}trackInteraction(n){this.interactionTracker?.track(n);}async resolveProviders(){return this.registry.resolveAll()}deriveEntitlementResult(n,e,t){let r=this.options.defaultEntitlementPolicy??"allow",i=e.entitlements;if(!i)return r==="allow"?{status:"allowed",allowed:true,reason:"no_entitlement_provider"}:{status:"denied",allowed:false,reason:"no_entitlement_provider_default_deny"};let s=i.entries[n];if(!s)return r==="allow"?{status:"allowed",allowed:true,reason:"entitlement_not_found_default_allow"}:{status:"denied",allowed:false,reason:"entitlement_not_found_default_deny"};let a=i.usage?.[n];if(e.rules){let o=wm(e.rules,n,{currentPlanHandle:e.plan?.currentPlanHandle,billingPeriod:e.plan?.billingPeriod,segmentIds:e.segments?.segmentIds??[]});if(o){let p={kind:o.kind,...o.fields};if(_g(p.kind))return Od(p,t?.used??a?.used??0)}else return {status:"denied",allowed:false,reason:"no_matching_entitlement_rule"}}return a&&t?.used!==void 0&&a.limit>0&&t.used>=a.limit?{status:"denied",allowed:false,reason:"usage_limit_exceeded",limit:a.limit,used:t.used,remaining:Math.max(0,a.limit-t.used)}:{status:s.status,allowed:s.status==="allowed",reason:s.reason,limit:a?.limit,used:a?.used,remaining:a?.remaining}}};function Ad(n){let e="";return n.forEach(t=>{e+=String.fromCharCode(t);}),btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Hl(n){let e=2166136261;for(let i=0;i<n.length;i+=1)e^=n.charCodeAt(i),e+=(e<<1)+(e<<4)+(e<<7)+(e<<8)+(e<<24);let t=new Uint8Array(8),r=new DataView(t.buffer);return r.setUint32(0,e>>>0),r.setUint32(4,e*1103515245>>>0),Ad(t)}var Am={async sha256Base64Url(n){return Hl(n)},randomHex(n){let e="0123456789abcdef",t="";for(let r=0;r<n;r+=1)t+=e[Math.floor(Math.random()*16)];return t}};var yg=z$1.enum(["session","day","week","month"]),xg=z$1.object({kind:z$1.enum(["template","slot"]),id:z$1.string(),label:z$1.string().optional()});z$1.object({id:z$1.string(),group:z$1.array(xg),cap:z$1.object({count:z$1.number().int().min(1),period:yg})});function vI(n,e){switch(n){case "session":case "lifetime":return 0;case "day":return e-1440*60*1e3;case "week":return e-10080*60*1e3;case "month":return e-720*60*60*1e3;default:return 0}}function Ig(n,e){return `${n}:${e}`}function zl(n){let{now:e}=n;if(n.sessionCooldownMinutes!=null&&n.sessionCooldownMinutes>0&&n.lastSessionPresentationAt!=null&&e-n.lastSessionPresentationAt<n.sessionCooldownMinutes*6e4)return {allowed:false,reason:"session_cooldown"};if(n.rules&&n.candidate){let t=n.candidate,r=n.counters??new Map;for(let i of n.rules){if(!i.group.some(p=>p.kind==="template"?p.id===t.templateId:p.kind==="slot"?p.id===t.slotId:false))continue;let a=Ig(i.id,i.cap.period);if((r.get(a)??0)>=i.cap.count)return {allowed:false,reason:"cap_hit",matchedRuleId:i.id}}}if(n.perPayload){let{policies:t,seenAt:r,cooldownUntil:i}=n.perPayload;if(i!=null&&Number.isFinite(i)&&i>e)return {allowed:false,reason:"suppressed_by_payload_cooldown"};for(let s of t)for(let a of s.rules){let o=vI(a.period,e);if(r.filter(v=>v>=o&&v<=e).length>=a.count)return {allowed:false,reason:`suppressed_by_payload_cap_${a.period}`}}}return {allowed:true}}async function jm(n,e){let t=ro(n.pageRoute),r=[n.tenantId,t,n.placementName.trim().toLowerCase(),String(n.placementScopeKey||"").trim().toLowerCase()].join("::");if(e)try{return (await e.sha256Base64Url(r)).slice(0,22)}catch{}return Hl(r).slice(0,22)}function Fm(n){return [n.slotId||"",n.surfaceType||"",n.entitlementHandle||"",n.planHandle||"",n.placementHandle||""].join("::")}function Lm(n){let e=Ps({placementId:n.placementId,userId:n.userId,contextMode:n.contextMode??"auto",overrides:n.overrides??{},traits:n.traits??{},route:ro(n.route),...n.runtimeContextFingerprint?{runtimeContextFingerprint:n.runtimeContextFingerprint}:{}});return `${n.tenantId}:${n.placementId}:${n.userId}:${Hl(e)}`}function Tg(n){if(n.length<=1)return n;let e=new Set;for(let r of n){let i=r.surface.template;if(!i)continue;let s=km(r);if(s.length!==0)for(let a of n){if(a.output_id===r.output_id||a.surface.template!==i)continue;let o=Cm(a);o&&s.includes(o)&&e.add(a.output_id);}}let t=new Map;for(let r of n){if(!r.surface.template)continue;let i=t.get(r.surface.template)??[];i.push(r),t.set(r.surface.template,i);}for(let r of t.values()){if(r.length<=1)continue;let i=r.map(a=>{let o=Se(a.content)?a.content:{};return {output:a,order:_n(o.milestone_order)??Number.NEGATIVE_INFINITY}}).filter(a=>Number.isFinite(a.order));if(i.length<=1)continue;let s=i.reduce((a,o)=>o.order>a.order?o:a);for(let a of i)a.output.output_id!==s.output.output_id&&e.add(a.output.output_id);}return n.filter(r=>!e.has(r.output_id))}function Pg(n){let t=(Se(n.content)?n.content:{}).__trigger_entitlement_handle;return typeof t=="string"&&t.length>0?t:null}function yI(n,e,t){if(t===1){let r=n.surface.slot_id,i=e.surface.slot_id;if(typeof r=="string"&&r&&typeof i=="string"&&i)return {leftKey:r,rightKey:i}}else if(t===0){let r=Pg(n),i=Pg(e);if(r&&i)return {leftKey:r,rightKey:i}}return {leftKey:n.surface.type??"",rightKey:e.surface.type??""}}function jd(n){if(n.length<=1)return n;let e=new Set;for(let t=0;t<n.length;t+=1)for(let r=t+1;r<n.length;r+=1){let i=n[t],s=n[r];if(i.surface.type!==s.surface.type)continue;let a=Zs(i.category),o=Zs(s.category);if(a!==o){a<o?e.add(s.output_id):e.add(i.output_id);continue}if(a===0||a===1){let{leftKey:p,rightKey:v}=yI(i,s,a);p===v&&e.add(s.output_id);}}return n.filter(t=>!e.has(t.output_id))}function Vm(n,e=false,t){let r=n;if(t?.fixedOnly&&(r=r.filter(p=>Zs(p.category)===1)),r.length===0)return null;let i=Tg(r);if(i.length===0)return null;let s=i.some(p=>Dl(p)!==null),a=s?i:jd(i);return a.length===0?null:[...a].sort((p,v)=>{if(s){let V=Dl(p),G=Dl(v);if(V!==null&&G!==null&&V!==G)return V-G;if(V!==null&&G===null)return -1;if(V===null&&G!==null)return 1}let l=Zs(p.category),x=Zs(v.category),I=l-x;if(I!==0)return I;if(l===2){let V=Tm(p)-Tm(v);if(V!==0)return V;let G=Pm(v)-Pm(p);if(G!==0)return G}let C=ql(v)-ql(p);if(C!==0)return C;let S=Cd(v)-Cd(p);return S!==0?S:p.output_id.localeCompare(v.output_id)})[0]??null}function xI(n,e,t){return {header:n,body:e,cta_label:t,title:n,cta:t}}function Um(n,e,t,r){let i=Se(r)?r:{},s=Se(i.decision)?i.decision:{},a=Se(i.content)?i.content:Se(s.content)?s.content:{},o=typeof s.visible=="boolean"?s.visible:typeof i.visible=="boolean"?i.visible:true;return {placementId:n,requestId:typeof i.request_id=="string"?i.request_id:e,visible:o,decisionSource:"remote",reasonCodes:Array.isArray(i.reason_codes)?i.reason_codes.filter(p=>typeof p=="string"):[],content:xI(typeof a.title=="string"?a.title:`${t} recommendation`,typeof a.body=="string"?a.body:"Treatment selected by RevTurbine decisioning.",typeof a.cta=="string"?a.cta:"Continue")}}function Fd(n){let e=[],t=[n,n.content,Se(n.content)?n.content.payload:void 0,Se(n.content)?n.content.placement:void 0,Se(n.content)?n.content.surface:void 0];for(let r of t){if(!Se(r))continue;let i=Se(r.caps)?r.caps:void 0;if(!i)continue;let s=[],a=bm(i.max_per_period);a&&s.push(a);let o=Number(i.cooldown_days),p=Number.isFinite(o)&&o>0?o*24*60*60*1e3:void 0;e.push({rules:s,...p!==void 0?{cooldownMs:p}:{}});}return e}function Bm(n,e,t,r,i="impression"){if(Zs(n.category)<=1)return {allowed:true};let s=Fd(n);if(s.length===0)return {allowed:true};let a={...t??{seenAt:[]},seenAt:(t?.seenAt??[]).filter(x=>Number.isFinite(x)&&x>0)},o=zl({perPayload:{policies:s,seenAt:a.seenAt,cooldownUntil:a.cooldownUntil},now:r});if(!o.allowed)return {allowed:false,reason:o.reason,updatedState:a};let p=[...a.seenAt,r],v=i==="dismiss"?s.map(x=>x.cooldownMs).filter(x=>typeof x=="number"&&Number.isFinite(x)&&x>0):[],l=v.length>0?r+Math.max(...v):void 0;return {allowed:true,updatedState:{seenAt:p,...l!==void 0?{cooldownUntil:l}:{}}}}function so(n){if(typeof n=="number"&&Number.isFinite(n))return n;if(typeof n=="string"&&n.trim().length>0){let e=Number(n);if(Number.isFinite(e))return e}}function Kl(n){return n.replace(/_(minutes|minute|credits|credit|seats|seat)$/i,"").replace(/_usage$/i,"").trim()}function SI(n,e){let t=so(n.limit_value??n.usage_limit??n.limit??n.allowance??n.initial_grant);if(t!==void 0)return t;let r=n.usageLimits;if(r&&typeof r=="object"&&!Array.isArray(r)){let i=(e??"").toLowerCase();for(let[s,a]of Object.entries(r))if(s.toLowerCase()===i)return so(a)}}function II(n){let e=so(n.warning_threshold_percent??n.warning_percentage??n.threshold_percent??n.threshold);if(e!==void 0)return Math.max(0,Math.min(100,e))}function Cg(n){let e={},t=n.providers;if(n.userId&&(e.user_id=n.userId),n.base)for(let[C,S]of Object.entries(n.base))(typeof S=="string"||typeof S=="number")&&(e[C]=S);let r=t?.plan?.currentPlanHandle,i=t?.plan?.currentPlanName??r;typeof i=="string"&&i.length>0&&(e.plan_name=i);let s=t?.plan?.trialDaysRemaining;s!==void 0&&Number.isFinite(s)&&(e.trial_days_remaining=s);let a=t?.plan?.trialDaysTotal;a!==void 0&&Number.isFinite(a)&&(e.trial_days_total=a);let o=t?.traits?.traits??{};for(let[C,S]of Object.entries(o))(typeof S=="string"||typeof S=="number")&&(e[C]=S);let p=t?.entitlements?.usage??{};for(let[C,S]of Object.entries(p)){let V=Kl(C);if(!V)continue;let G=so(S.used),re=so(S.remaining),Re=so(S.limit);if(G!==void 0&&(e[`${V}_usage_current`]=G,e.usage_current===void 0&&(e.usage_current=G),e.current_usage===void 0&&(e.current_usage=G)),Re!==void 0&&(e[`${V}_usage_limit`]=Re,e.usage_limit===void 0&&(e.usage_limit=Re),e.current_limit===void 0&&(e.current_limit=Re)),re!==void 0)e[`${V}_usage_remaining`]=re,e.usage_remaining===void 0&&(e.usage_remaining=re);else if(G!==void 0&&Re!==void 0){let ke=Math.max(0,Re-G);e[`${V}_usage_remaining`]=ke,e.usage_remaining===void 0&&(e.usage_remaining=ke);}if(G!==void 0&&Re!==void 0&&Re>0){let ke=Math.min(100,Math.round(G/Re*100));e[`${V}_usage_percent`]=ke,e.usage_percent===void 0&&(e.usage_percent=ke);}let we=S.reset_date;typeof we=="string"&&we.length>0&&(e[`${V}_reset_date`]=we,e.reset_date===void 0&&(e.reset_date=we));}let v=t?.rules?.entitlementRules??{};for(let[C,S]of Object.entries(v)){if(!Array.isArray(S)||S.length===0)continue;let V=S.find(ke=>ke.kind==="usage_limit"||ke.kind==="usage_rate"||ke.kind==="credits"||ke.kind==="seat");if(!V)continue;let G=Kl(C);if(!G)continue;let re=V.fields??{},Re=SI(re,r);Re!==void 0&&e[`${G}_usage_limit`]===void 0&&(e[`${G}_usage_limit`]=Re);let we=II(re);we!==void 0&&(e[`${G}_usage_warning_threshold_percent`]=we);}n.userName&&n.userName.length>0&&(e.user_name=n.userName);let l=t?.plan?.currentPlanPrice;typeof l=="string"&&l.length>0&&(e.plan_price=l),n.upgradePlan?.name&&(e.upgrade_plan_name=n.upgradePlan.name),n.upgradePlan?.price&&(e.upgrade_plan_price=n.upgradePlan.price),n.trialPlanName&&n.trialPlanName.length>0&&(e.trial_plan_name=n.trialPlanName),n.promoDiscount&&n.promoDiscount.length>0&&(e.promo_discount=n.promoDiscount),n.featuresLostOnDowngrade&&n.featuresLostOnDowngrade.length>0&&(e.features_lost_on_downgrade=n.featuresLostOnDowngrade);let x=n.effectiveGrants;if(x)for(let[C,S]of Object.entries(x)){if(S.allocation==="per_user"||S.allocation==="per_user_pooled"||!S.allocation){let V=Kl(C);if(!V)continue;S.used!==void 0&&e[`${V}_usage_current`]===void 0&&(e[`${V}_usage_current`]=S.used),S.limit!==void 0&&e[`${V}_usage_limit`]===void 0&&(e[`${V}_usage_limit`]=S.limit);}if(S.enforcement&&(S.status==="limited"||S.status==="denied")){let V=Kl(C);V&&e[`${V}_enforcement`]===void 0&&(e[`${V}_enforcement`]=S.enforcement),e.enforcement_mode===void 0&&(e.enforcement_mode=S.enforcement);}}let I=t?.rules?.entitlementRules??{};for(let[C,S]of Object.entries(I)){if(!Array.isArray(S))continue;let V=Kl(C);if(V)for(let G of S){if(G.kind==="credits"){let re=e[`${V}_usage_remaining`];re!==void 0&&e.credits_remaining===void 0&&(e.credits_remaining=re);}if(G.kind==="seat"){let re=e[`${V}_usage_current`],Re=e[`${V}_usage_limit`];re!==void 0&&e.seat_count===void 0&&(e.seat_count=re),Re!==void 0&&e.seat_limit===void 0&&(e.seat_limit=Re);}}}if(n.featureInteractions&&x){let{invokedFeatureHandles:C,interactionCounts:S,topFeaturesByEngagement:V}=n.featureInteractions,G=new Set(C),re=new Set;for(let[ke,ie]of Object.entries(x))(ie.status==="denied"||ie.status==="limited")&&re.add(ke);let Re=0,we=0;for(let ke of C)re.has(ke)&&(Re++,S&&(we+=S[ke]??0));if(e.gated_features_used_count=Re,S&&(e.gated_action_count=we),V){let ke=V.find(ie=>!G.has(ie)&&re.has(ie));ke&&(e.top_unused_gated_feature=ke);}if(t?.plan?.trialActive){let ke=0;for(let ie of C)ie in x&&ke++;e.trial_features_used=ke;}}return e}function qm(n,e){let t={};for(let[r,i]of Object.entries(e))i!==void 0&&(t[r]=i);return {...n,...t,custom:{...n.custom||{},...e.custom||{}},entitlements:{...n.entitlements||{},...e.entitlements||{}},usage:{...n.usage||{},...e.usage||{}},personalization:{...n.personalization||{},...e.personalization||{}}}}function Ld(n,e,t){let r={};for(let[i,s]of Object.entries(n))(typeof s=="string"||typeof s=="number"||typeof s=="boolean")&&(r[i]=s);e&&r.plan===void 0&&(r.plan=e);for(let[i,s]of Object.entries(t))r[i]===void 0&&(r[i]=s);return r}function Vd(n,e,t){let r=Ca(e,n.plan),i=r??(typeof n.plan=="object"&&n.plan?.id?n.plan.id:void 0),s={...n.custom??{}};for(let[o,p]of Object.entries(n.entitlements??{}))s[o]===void 0&&(s[o]=p);r&&s.plan_name===void 0&&(s.plan_name=r),i&&s.plan===void 0&&(s.plan=i);let a={...Ts(n.usage),...t??{}};for(let[o,p]of Object.entries(a))s[o]===void 0&&(s[o]=p);return {effectivePlan:i,traits:s,usage:a,segmentTraits:Ld(s,i,a)}}function PI(n){return {plan:n.plan??null,usage:n.usage??{},custom:n.custom??{},trial:n.trial??null,instances:n.instances??[]}}function Dm(n,e=Am){return e.sha256Base64Url(Ps(PI(n)))}function Mm(n){let{context:e,exportedConfig:t,usageBalances:r,usageTokenPrefixByEntitlement:i,usageThresholdLookup:s}=n,a={};for(let[re,Re]of Object.entries(e.personalization??{}))/^(usage_(current|limit|remaining|percent)|.+_usage_(current|limit|remaining|percent)|plan_name|user_id)$/i.test(re)||(a[re]=Re);let o={...a},p=Ca(t,e.plan);p?o.plan_name=p:typeof e.plan=="object"&&e.plan?.name&&(o.plan_name=e.plan.name);let v={...Ts(e.usage),...r},l=Object.entries(v).filter(([,re])=>Number.isFinite(re)).sort(([re],[Re])=>re.localeCompare(Re)),x,I,C,S,V=[];for(let[re,Re]of l){let we=i.get(re)??io(re);if(!we)continue;let ie=s(re)?.limit,Ot=ie!==void 0?Math.max(0,ie-Re):void 0,Qt=ie!==void 0&&ie>0?Math.min(100,Math.round(Re/ie*100)):void 0;o[`${we}_usage_current`]=Re,ie!==void 0&&(o[`${we}_usage_limit`]=ie),Ot!==void 0&&(o[`${we}_usage_remaining`]=Ot),Qt!==void 0&&(o[`${we}_usage_percent`]=Qt),V.push({prefix:we,current:Re,...ie!==void 0?{limit:ie}:{},...Ot!==void 0?{remaining:Ot}:{},...Qt!==void 0?{percent:Qt}:{}}),x===void 0&&(x=Re,I=ie,C=Ot,S=Qt);}let G=V.find(re=>re.prefix==="core")??V.find(re=>re.limit!==void 0)??V[0];return G&&(x=G.current,I=G.limit,C=G.remaining,S=G.percent),x!==void 0&&(o.usage_current=x),I!==void 0&&(o.usage_limit=I),C!==void 0&&(o.usage_remaining=C),S!==void 0&&(o.usage_percent=S),o}function Nm(n,e,t){let r=[];for(let[i,s]of Object.entries(e)){let a=n[i]||0;if(!Number.isFinite(s)||s<=a)continue;let o=t(i);if(!o)continue;let p=a/o.limit*100,v=s/o.limit*100;v>=o.warningPercent&&p<o.warningPercent&&r.push({type:"usage_limit_approaching",entitlement_handle:i,current_usage:s,usage_limit:o.limit,usage_percent:Math.min(100,Math.round(v)),threshold:o.warningPercent}),s>=o.limit&&a<o.limit&&r.push({type:"usage_limit_reached",entitlement_handle:i,current_usage:s,usage_limit:o.limit,usage_percent:Math.min(100,Math.round(v)),threshold:100});}return r}function Hm(n,e,t=3){if(!n.in_trial)return e==="none"?"none":"expired";let r=Number(n.days_remaining);if(Number.isFinite(r)&&r<=0)return "expired";if(Number.isFinite(r)&&r<=t)return "expiring";let i=Number(n.day_number);if(Number.isFinite(i)&&i>0&&Number.isFinite(r)){let s=i+Math.max(0,r);if(s>0&&i>=Math.ceil(s/2))return "midpoint"}return "none"}var kg="__self__",TI={steps:[{kind:"segment",table:"segments",by:"handle"},{kind:"plan",table:"plans",by:"unique_handle"},{kind:"literal"}]},zm={plans:{sortKey:"unique_handle",indexBy:["unique_handle"],fields:{unique_handle:{},name:{},tier_position:{},sort_order:{},visibility:{}}},entitlements:{sortKey:"unique_handle",indexBy:["unique_handle"],fields:{unique_handle:{},name:{},type:{},unit:{},tier_definitions:{}}},entitlement_rules:{sortKey:"id",fields:{id:{},entitlement_id:{reference:{table:"entitlements",by:"unique_handle",kind:"one",onDelete:"cascade"}},targets:{},segment_ids:{reference:{table:"segments",by:"handle",kind:"list",onDelete:"restrict"}},kind:{include:"never"},unit:{include:"never"},tier_name:{include:"never"},tier_description:{include:"never"},enabled:{},limit_value:{},enforcement:{},tier_value:{},period_scope:{},included_count:{},seat_type_id:{},initial_grant:{},allowance_value:{},rollover_enabled:{},max_balance:{},reset_period:{},max_seats:{},rate_value:{},amount_cents:{},currency:{},current_usage:{include:"never"},allocation:{}}},segments:{sortKey:"handle",indexBy:["handle"],fields:{name:{},handle:{},predicates:{},dimension_id:{},experiment_id:{}}},placement_slots:{sortKey:"id",indexBy:["id","placement_handle"],fields:{id:{},label:{},description:{},surface_type:{},placement_handle:{},template:{}}},slot_configs:{sortKey:"slot_id",fields:{slot_id:{reference:{table:"placement_slots",by:"id",kind:"one",onDelete:"cascade"}},active:{},triggers:{}}},surface_templates:{sortKey:"id",indexBy:["id"],fields:{id:{},surface_type:{},fields:{}}},placements:{sortKey:"id",indexBy:["id"],fields:{id:{},name:{},category:{},trigger:{discriminator:{keyed_on:{table:kg,via:"__self__",field:"trigger.type"},variants:{surface_render:["type","slot_id"],entitlement_gate:["type","entitlement_handle","tier_threshold"],usage_threshold:["type","entitlement_handle","threshold_percent"],credit_threshold:["type","entitlement_handle","threshold_percent"],seat_threshold:["type","entitlement_handle","threshold_percent"],trial_started:["type","trial_type"],trial_progress:["type","progress_percent"],trial_ending:["type","days_before_end"],trial_ended:["type"],trial_converted:["type"],qualifier:["type","qualifier"]}}},payloads:{},order:{}}},placement_payloads:{sortKey:"payload_id",fields:{payload_id:{},placement_id:{reference:{table:"placements",by:"id",kind:"one",onDelete:"cascade"}},target:{chipResolution:TI},caps:{},created_at:{},updated_at:{},source_mode:{},surfaces:{},content_link:{},surface_slot_ids:{},remind_later_minutes:{}}},content_ui_paths:{sortKey:"name",fields:{name:{},action_type:{},plan_handle:{reference:{table:"plans",by:"unique_handle",kind:"optional",onDelete:"detach"}},promotion_id:{reference:{table:"content_promotions",by:"id",kind:"optional",onDelete:"detach"}},placement_handle:{reference:{table:"placement_slots",by:"placement_handle",kind:"optional",onDelete:"detach"}},url:{},tour_id:{},target_billing_period:{},description:{}}},content_promotions:{sortKey:"id",indexBy:["id"],fields:{id:{},name:{},discount:{},type:{},status:{}}},personalization_tokens:{sortKey:"token",indexBy:["token"],fields:{token:{},label:{},description:{},category:{},data_source:{},example_value:{},value_map:{},format:{}}},message_blocks:{sortKey:"block_id",indexBy:["block_id"],fields:{block_id:{},tenant_id:{},name:{},surface_template_id:{reference:{table:"surface_templates",by:"id",kind:"optional",onDelete:"detach"}},default_content:{},segment_overrides:{},child_blocks:{},tokens_used:{},status:{},created_at:{},updated_at:{}}}};var Rg=["high","medium","low"];function Gl(n,e){return n==="active"?Rg.includes(e):n===e}var CI="activity_level";function Eg(n,e){let t=e[n.field];if(t===void 0)return false;let r=String(t),i=n.value,s=n.field===CI;switch(n.operator){case "eq":return s?Gl(i,r):r===i;case "neq":return s?!Gl(i,r):r!==i;case "gt":return Number(r)>Number(i);case "lt":return Number(r)<Number(i);case "gte":return Number(r)>=Number(i);case "lte":return Number(r)<=Number(i);case "contains":return r.includes(i);case "in":{let a=i.split(",").map(o=>o.trim());return s?a.some(o=>Gl(o,r)):a.includes(r)}default:return false}}function $l(n,e,t={}){return n.filter(r=>{let i=!!(r.predicates&&r.predicates.length>0);if(r.experiment_id){if(!Object.prototype.hasOwnProperty.call(t,r.experiment_id))return false;if(!i)return true}else if(!i)return false;return r.predicates.every(s=>Eg(s,e))}).map(r=>r.handle)}function wg(n){let e={};for(let t of n)t.experiment_id&&(e[t.handle]=t.experiment_id);return e}function Og(n,e,t={}){for(let r of e){let i=n[r];if(!i)continue;let s=t[i];if(typeof s=="string")return {experiment_id:i,variant_key:s}}}function Km(n,e){let t=String(n.field||""),r=String(n.operator||""),i=String(n.value||""),s=e[t],a=typeof s=="string"||typeof s=="number"||typeof s=="boolean"?s:null,o=Eg(n,e);return {field:t,operator:r,expected:i,actual:a,matched:o}}z$1.object({target_plan_ids:z$1.array(z$1.string()).default([]),target_billing_periods:z$1.array(z$1.string()).default([]),category:z$1.string().optional()});function ep(n,e){return n.target_plan_ids.length>0&&e.currentPlanId&&!n.target_plan_ids.includes(e.currentPlanId)?{eligible:false,reason:"plan_mismatch"}:n.target_billing_periods.length>0&&e.billingPeriod&&!n.target_billing_periods.includes(e.billingPeriod)?{eligible:false,reason:"billing_period_mismatch"}:(n.category==="upsell"||n.category==="trial_conversion")&&e.planHandle==="enterprise"?{eligible:false,reason:"enterprise_upsell_suppressed"}:{eligible:true}}var Fg={Named:"named",Minted:"minted"},Lg="x-revturbine-schema-identity";function Ji(n="handle"){return {[Lg]:{kind:Fg.Named,handleField:n}}}function Li(n="handle"){return {[Lg]:{kind:Fg.Minted,handleField:n}}}var un={Playbook:"playbook",Branding:"branding",Billing:"billing",Metering:"metering",CustomerOperations:"customer_operations",EventIngestion:"event_ingestion"},Fi={Customer:"customer",Stripe:"stripe",CodeConstant:"code-constant",Runtime:"runtime"},RI="x-revturbine-context",EI="x-revturbine-in-config",wI="x-revturbine-sdk-input",OI="x-revturbine-source",AI="x-revturbine-deprecation",jI={[un.Playbook]:Fi.Customer,[un.Branding]:Fi.Customer,[un.Billing]:Fi.Stripe,[un.Metering]:Fi.Customer,[un.CustomerOperations]:Fi.Runtime,[un.EventIngestion]:Fi.Runtime};function Mn(n,e){return {[RI]:n,[EI]:e.inConfig??n===un.Playbook,[wI]:e.sdkInput,[OI]:e.source??jI[n]}}function Gm(n){return {deprecated:true,[AI]:{since:n.since,replacement:n.replacement,remove_after:n.removeAfter,reason:n.reason}}}var Yt=n=>z$1.object({items:z$1.array(n)}),Zn=z$1.object({error:z$1.string(),code:z$1.string(),request_id:z$1.string()}),R=n=>n,Wt=z$1.object({page:z$1.number().int().min(1).default(1).optional(),per_page:z$1.number().int().min(1).max(100).default(25).optional(),sort:z$1.string().optional(),order:z$1.enum(["asc","desc"]).default("asc").optional(),include_deleted:z$1.boolean().default(false).optional()}),{Unrestricted:ue}=ji,{Persisted:tp,Transient:Qr}=Ys,{Internal:Vg,External:Dr}=Wi,Ug=Mn(un.Playbook,{sdkInput:true}),FI=Mn(un.Playbook,{inConfig:false,sdkInput:false}),Bg=z$1.enum(["per_month","per_year","per_billing_period","lifetime","concurrent","per_instance","per_second","per_minute","per_hour","per_6_hours","per_day","per_week"]).meta({id:"UsagePeriodScope","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr}),qd=z$1.enum(["account_pool","per_instance","per_user","per_user_pooled"]).meta({id:"UsageAllocation","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr}),LI=z$1.enum(lg).meta({id:"EntitlementGrantStatus","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr}),VI=z$1.enum(["rule","user_context","override"]).meta({id:"EntitlementGrantSource","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr}),qg=z$1.enum(["hard_block","soft_block","degrade","allow_overage"]).meta({id:"EnforcementMode","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr}),$m=z$1.object({entitlement_id:z$1.string().min(1).meta(ue),entitlement_handle:z$1.string().min(1).meta(ue),status:LI.meta(ue),limit:z$1.number().optional().meta(ue),used:z$1.number().optional().meta(ue),allocation:qd.optional().meta(ue),enforcement:qg.optional().meta(ue),source:VI.optional().meta(ue),plan_id:z$1.string().optional().meta(ue),segment_id:z$1.string().optional().meta(ue),seat_type_id:z$1.string().optional().meta(ue),rule_id:z$1.string().optional().meta(ue)}).meta({id:"EntitlementGrant","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr,...ji.Operational});z$1.object({account:z$1.record(z$1.string(),$m).optional().meta(ue),instance:z$1.record(z$1.string(),$m).optional().meta(ue),user:z$1.record(z$1.string(),$m).optional().meta(ue)}).meta({id:"EntitlementGrantSet","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr,...ji.Operational});var UI=z$1.enum(["public","non_public"]).meta({id:"RuleVisibility","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr}),BI=z$1.enum(["plan","plan_variation","addon","addon_variation"]).meta({id:"EntitlementRuleTargetKind","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr}),Dg=z$1.object({kind:BI.meta(ue),id:z$1.string().min(1).meta(ue)}).meta({id:"EntitlementRuleTarget","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr}),qI=z$1.enum(["month","day","week","quarter","year","billing_period","hour","six_hours"]).meta({id:"EntitlementRulePeriodUnit","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr}),mo=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...ue,readOnly:true}),name:ks.meta(ue),handle:Jn.meta(ue),customer_facing_description:z$1.string().max(500).optional().meta(ue),type:kd.meta(ue),unit:z$1.string().max(100).optional().meta(ue),period_scope:Bg.optional().meta(ue),allocation:qd.optional().meta(ue),tier_definitions:z$1.array(z$1.object({name:z$1.string(),handle:z$1.string(),description:z$1.string().optional()})).optional().meta(ue),sort_order:z$1.number().int().default(0).meta(ue),metadata:ci.meta(ue)}).meta({id:"Entitlement","x-revturbine-schema-persistence":tp,"x-revturbine-schema-exposure":Dr,...Ug,...Ji()}),DI=Cr("EntitlementAnchor"),vo=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...ue,readOnly:true}),handle:Jn.meta({...ue,readOnly:true}),entitlement_id:z$1.string().min(1).meta(ue),targets:z$1.array(Dg).min(1).meta(ue),segment_ids:z$1.array(z$1.string()).default([]).meta(ue),visibility:UI.default("public").meta(ue),period_scope:Bg.optional().meta(ue),instance:z$1.string().max(100).optional().meta(ue),reset_period:qI.optional().meta(ue),limit_value:z$1.union([z$1.number(),z$1.literal("unlimited")]).optional().meta(ue),enforcement:qg.optional().meta(ue),warning_threshold_percent:Ra.optional().meta(ue),overage_price_ref:z$1.string().optional().meta(ue),grace_period_hours:z$1.number().int().min(0).optional().meta(ue),tier_value:z$1.string().optional().meta(ue),rate_value:z$1.number().optional().meta(ue),initial_grant:z$1.number().optional().meta(ue),allowance_value:z$1.union([z$1.number(),z$1.literal("unlimited")]).optional().meta(ue),rollover_enabled:z$1.boolean().optional().meta(ue),max_balance:z$1.union([z$1.number(),z$1.literal("unlimited")]).nullable().default(null).meta(ue),seat_type_id:z$1.string().optional().meta(ue),included_count:z$1.union([z$1.number().int(),z$1.literal("unlimited")]).optional().meta(ue),at_limit_behavior:z$1.enum(["hard_cap","auto_upgrade_at_renewal"]).optional().meta(ue),stripe_metered_price_id:z$1.string().optional().meta(ue),enabled:z$1.boolean().optional().meta(ue),allocation:qd.optional().meta(ue),max_seats:z$1.union([z$1.number(),z$1.literal("unlimited")]).nullable().optional().meta(ue),amount_cents:z$1.number().int().optional().meta(ue),currency:z$1.string().optional().meta(ue)}).meta({id:"EntitlementRule","x-revturbine-schema-persistence":tp,"x-revturbine-schema-exposure":Vg,...Ug,...Li()}),MI=Cr("EntitlementRuleAnchor");vo.superRefine((n,e)=>{n.reset_period==="billing_period"&&n.targets.findIndex(s=>s.kind!=="plan_variation"&&s.kind!=="addon_variation")!==-1&&e.addIssue({code:"custom",path:["reset_period"],params:{code:"billing_period_target_mismatch"},message:"reset_period='billing_period' requires all targets to be plan_variation or addon_variation"});let t=n.allowance_value;(t==="unlimited"||typeof t=="number"&&t>0)&&n.reset_period==null&&e.addIssue({code:"custom",path:["reset_period"],params:{code:"allowance_requires_reset_period"},message:"a non-zero credits allowance_value requires a reset_period (the per-period refill cadence)"});});var NI=z$1.enum(["one_time_period_mismatch"]).meta({id:"EntitlementRuleWarningCode","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr}),HI=z$1.object({code:NI.meta(ue),message:z$1.string().min(1).meta(ue),path:z$1.array(z$1.union([z$1.string(),z$1.number().int()])).optional().meta(ue)}).meta({id:"EntitlementRuleWarning","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr}),Zm=vo.extend({warnings:z$1.array(HI).optional().meta(ue)}).meta({id:"EntitlementRuleWriteResponse","x-revturbine-schema-persistence":Qr,"x-revturbine-schema-exposure":Dr}),Ym=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({handle:Jn.meta({...ue,readOnly:true}),rule_id:z$1.string().min(1).meta(ue),experiment_id:z$1.string().min(1).meta(ue),variant_name:z$1.string().min(1).max(200).meta(ue),is_control:z$1.boolean().default(false).meta(ue),override_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(ue)}).meta({id:"EntitlementRuleVariant","x-revturbine-schema-persistence":tp,"x-revturbine-schema-exposure":Vg,...FI,...Li()}),zI=Jr(mo),KI=Jr(vo);({"/api/entitlement-anchors":{get:R({operationId:"listEntitlementAnchors",requestParams:{query:Wt},summary:"List entitlement anchors (identity registry)",tags:["entitlements"],responses:{200:{description:"Entitlement anchor list",content:{"application/json":{schema:Yt(DI)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"entitlement-anchors",persistence:{table:"entitlements",mode:"list"}}})},"/api/entitlement-rule-anchors":{get:R({operationId:"listEntitlementRuleAnchors",requestParams:{query:Wt},summary:"List entitlement rule anchors (identity registry)",tags:["entitlements"],responses:{200:{description:"Entitlement rule anchor list",content:{"application/json":{schema:Yt(MI)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"entitlement-rule-anchors",persistence:{table:"entitlementRules",mode:"list"}}})},"/api/entitlements":{get:R({operationId:"listEntitlements",requestParams:{query:Wt},summary:"List entitlements",tags:["entitlements"],responses:{200:{description:"Entitlement list",content:{"application/json":{schema:Yt(mo)}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"list"}}}),post:R({operationId:"createEntitlement",summary:"Create entitlement",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:Tr(mo)}}},responses:{201:{description:"Created",content:{"application/json":{schema:mo}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"create"}}})},"/api/entitlements/{entitlementId}":{get:R({operationId:"getEntitlement",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Get entitlement",tags:["entitlements"],responses:{200:{description:"Entitlement detail",content:{"application/json":{schema:mo}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"get"}}}),patch:R({operationId:"updateEntitlement",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Update entitlement",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:zI}}},responses:{200:{description:"Updated",content:{"application/json":{schema:mo}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"update"}}}),delete:R({operationId:"deleteEntitlement",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Delete entitlement",tags:["entitlements"],responses:{204:{description:"Deleted"},default:{description:"Error",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"delete"}}})},"/api/entitlements/{entitlementId}/rules":{get:R({operationId:"listEntitlementRules",requestParams:{path:z$1.object({entitlementId:z$1.string()}),query:Wt},summary:"List rules for entitlement",tags:["entitlements"],responses:{200:{description:"Rule list",content:{"application/json":{schema:Yt(vo)}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"list"}}}),post:R({operationId:"createEntitlementRule",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Create entitlement rule",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:Tr(vo)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Zm}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"create"}}})},"/api/entitlement-rules/{ruleId}":{patch:R({operationId:"updateEntitlementRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Update entitlement rule",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:KI}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Zm}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"update"}}}),delete:R({operationId:"deleteEntitlementRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Delete entitlement rule",tags:["entitlements"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"delete"}}})},"/api/entitlement-rules/{ruleId}/duplicate":{post:R({operationId:"duplicateEntitlementRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Duplicate entitlement rule",tags:["entitlements"],responses:{201:{description:"Duplicated",content:{"application/json":{schema:Zm}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"duplicate"}}})},"/api/entitlement-rules/{ruleId}/variants":{get:R({operationId:"listEntitlementRuleVariants",requestParams:{path:z$1.object({ruleId:z$1.string()}),query:Wt},summary:"List A/B variants for rule",tags:["entitlements"],responses:{200:{description:"Variant list",content:{"application/json":{schema:Yt(Ym)}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rule-variants",persistence:{table:"entitlementRuleVariants",mode:"list"}}}),post:R({operationId:"createEntitlementRuleVariant",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Create rule A/B variant",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:Tr(Ym)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Ym}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rule-variants",persistence:{table:"entitlementRuleVariants",mode:"create"}}})}});var {Unrestricted:Ke}=ji,{Persisted:Ql,Transient:ec}=Ys,{Internal:Qi}=Wi,Mg=Mn(un.Playbook,{sdkInput:true}),Ng=Mn(un.Playbook,{inConfig:false,sdkInput:true}),GI=z$1.enum(["not_started","active","expired","converted","cancelled"]).meta({id:"TrialStatus","x-revturbine-schema-persistence":ec,"x-revturbine-schema-exposure":Qi}),np=z$1.enum(["time","usage"]).meta({id:"TrialLimitType","x-revturbine-schema-persistence":ec,"x-revturbine-schema-exposure":Qi}),Hg=z$1.object({name:ks.meta(Ke),handle:Jn.meta(Ke),plan_id:z$1.string().nullable().optional().meta(Ke),segment_id:z$1.string().nullable().optional().meta(Ke),trial_limit_type:np.default("time").meta(Ke),duration_days:z$1.number().int().min(1).max(365).nullable().optional().meta(Ke),grace_period_days:z$1.number().int().min(0).default(0).meta(Ke),usage_entitlement_handle:z$1.string().min(1).optional().meta(Ke),usage_limit_value:z$1.number().int().min(1).optional().meta(Ke),require_payment_method:z$1.boolean().default(false).meta(Ke),auto_convert:z$1.boolean().default(true).meta(Ke),convert_to_plan_id:z$1.string().optional().meta(Ke),fallback_plan_id:z$1.string().optional().meta(Ke),limit_per_customer:z$1.number().int().min(1).default(1).meta(Ke),is_active:z$1.boolean().default(true).meta(Ke),metadata:ci.meta(Ke)}),oo=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...Ke,readOnly:true})}).merge(Hg).meta({id:"FreeTrialRule","x-revturbine-schema-persistence":Ql,"x-revturbine-schema-exposure":Qi,...Mg,...Ji()}),$I=Cr("FreeTrialRuleAnchor"),ZI=z$1.enum(["signup","first_premium_access","manual"]).meta({id:"ReverseTrialStartPolicy","x-revturbine-schema-persistence":ec,"x-revturbine-schema-exposure":Qi}),zg=z$1.object({name:ks.meta(Ke),handle:Jn.meta(Ke),premium_plan_id:z$1.string().min(1).meta(Ke),fallback_plan_id:z$1.string().min(1).meta(Ke),segment_id:z$1.string().nullable().optional().meta(Ke),trial_limit_type:np.default("time").meta(Ke),duration_days:z$1.number().int().min(1).max(365).nullable().optional().meta(Ke),usage_entitlement_handle:z$1.string().min(1).optional().meta(Ke),usage_limit_value:z$1.number().int().min(1).optional().meta(Ke),start_policy:ZI.default("signup").meta(Ke),show_upgrade_prompt_at_day:z$1.number().int().min(0).optional().meta(Ke),entitlements_during_trial:z$1.array(z$1.string()).default([]).meta(Ke),is_active:z$1.boolean().default(true).meta(Ke),metadata:ci.meta(Ke)}),lo=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...Ke,readOnly:true})}).merge(zg).meta({id:"ReverseTrialRule","x-revturbine-schema-persistence":Ql,"x-revturbine-schema-exposure":Qi,...Mg,...Ji()}),YI=Cr("ReverseTrialRuleAnchor"),Kg=z$1.enum(["1_per_lifetime","1_per_plan","1_per_year","unlimited"]).meta({id:"TrialLimitPolicy","x-revturbine-schema-persistence":ec,"x-revturbine-schema-exposure":Qi}),Gg=z$1.enum(["per_customer","per_email_domain"]).meta({id:"TrialEligibilityScope","x-revturbine-schema-persistence":ec,"x-revturbine-schema-exposure":Qi}),co=bn.merge(kn).merge(Rn).extend({trial_limit_policy:Kg.default("1_per_lifetime").meta(Ke),eligibility_scope:Gg.default("per_customer").meta(Ke)}).meta({id:"FreeTrialSettings","x-revturbine-schema-persistence":Ql,"x-revturbine-schema-exposure":Qi,...Ng}),uo=bn.merge(kn).merge(Rn).extend({trial_limit_policy:Kg.default("1_per_lifetime").meta(Ke),eligibility_scope:Gg.default("per_customer").meta(Ke)}).meta({id:"ReverseTrialSettings","x-revturbine-schema-persistence":Ql,"x-revturbine-schema-exposure":Qi,...Ng}),Ud=bn.merge(kn).merge(Rn).extend({customer_id:z$1.string().min(1).meta(Ke),rule_id:z$1.string().min(1).meta(Ke),rule_type:z$1.enum(["free_trial","reverse_trial"]).meta(Ke),plan_id:z$1.string().min(1).meta(Ke),status:GI.default("active").meta(Ke),started_at:z$1.string().datetime().meta({...Ke,readOnly:true}),expires_at:z$1.string().datetime().nullable().optional().meta(Ke),trial_limit_type:np.default("time").meta(Ke),usage_entitlement_handle:z$1.string().min(1).optional().meta(Ke),usage_limit_value:z$1.number().int().min(1).optional().meta(Ke),converted_at:Ed.meta(Ke),cancelled_at:Ed.meta(Ke),metadata:ci.meta(Ke)}).meta({id:"TrialInstance","x-revturbine-schema-persistence":Ql,"x-revturbine-schema-exposure":Qi});({"/api/free-trial-rule-anchors":{get:R({operationId:"listFreeTrialRuleAnchors",requestParams:{query:Wt},summary:"List free trial rule anchors (identity registry)",tags:["trials"],responses:{200:{description:"Free trial rule anchor list",content:{"application/json":{schema:Yt($I)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-rule-anchors",persistence:{table:"freeTrialRules",mode:"list"}}})},"/api/trials/free-rules":{get:R({operationId:"listFreeTrialRules",requestParams:{query:Wt},summary:"List free trial rules",tags:["trials"],responses:{200:{description:"Free trial rule list",content:{"application/json":{schema:Yt(oo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"list"}}})},"/api/trials/free-rules/{ruleId}":{get:R({operationId:"getFreeTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Get free trial rule",tags:["trials"],responses:{200:{description:"Free trial rule",content:{"application/json":{schema:oo}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"get"}}}),patch:R({operationId:"updateFreeTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Update free trial rule",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:oo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:oo}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"update"}}}),delete:R({operationId:"deleteFreeTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Delete free trial rule",tags:["trials"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"delete"}}})},"/api/reverse-trial-rule-anchors":{get:R({operationId:"listReverseTrialRuleAnchors",requestParams:{query:Wt},summary:"List reverse trial rule anchors (identity registry)",tags:["trials"],responses:{200:{description:"Reverse trial rule anchor list",content:{"application/json":{schema:Yt(YI)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rule-anchors",persistence:{table:"reverseTrialRules",mode:"list"}}})},"/api/trials/reverse-rules":{get:R({operationId:"listReverseTrialRules",requestParams:{query:Wt},summary:"List reverse trial rules",tags:["trials"],responses:{200:{description:"Reverse trial rule list",content:{"application/json":{schema:Yt(lo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"list"}}})},"/api/trials/reverse-rules/{ruleId}":{get:R({operationId:"getReverseTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Get reverse trial rule",tags:["trials"],responses:{200:{description:"Reverse trial rule",content:{"application/json":{schema:lo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"get"}}}),patch:R({operationId:"updateReverseTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Update reverse trial rule",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:lo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:lo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"update"}}}),delete:R({operationId:"deleteReverseTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Delete reverse trial rule",tags:["trials"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"delete"}}})},"/api/trials/free-settings":{get:R({operationId:"listFreeTrialSettings",requestParams:{query:Wt},summary:"List free trial settings (one row per tenant)",tags:["trials"],responses:{200:{description:"Free trial settings list",content:{"application/json":{schema:Yt(co)}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-settings",persistence:{table:"freeTrialSettings",mode:"list"}}})},"/api/trials/free-settings/{settingsId}":{get:R({operationId:"getFreeTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Get free trial settings",tags:["trials"],responses:{200:{description:"Free trial settings",content:{"application/json":{schema:co}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-settings",persistence:{table:"freeTrialSettings",mode:"get"}}}),patch:R({operationId:"updateFreeTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Update free trial settings",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:co.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:co}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-settings",persistence:{table:"freeTrialSettings",mode:"update"}}})},"/api/trials/reverse-settings":{get:R({operationId:"listReverseTrialSettings",requestParams:{query:Wt},summary:"List reverse trial settings (one row per tenant)",tags:["trials"],responses:{200:{description:"Reverse trial settings list",content:{"application/json":{schema:Yt(uo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-settings",persistence:{table:"reverseTrialSettings",mode:"list"}}})},"/api/trials/reverse-settings/{settingsId}":{get:R({operationId:"getReverseTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Get reverse trial settings",tags:["trials"],responses:{200:{description:"Reverse trial settings",content:{"application/json":{schema:uo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-settings",persistence:{table:"reverseTrialSettings",mode:"get"}}}),patch:R({operationId:"updateReverseTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Update reverse trial settings",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:uo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:uo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-settings",persistence:{table:"reverseTrialSettings",mode:"update"}}})},"/api/trials/instances":{get:R({operationId:"listTrialInstances",requestParams:{query:Wt},summary:"List trial instances",tags:["trials"],responses:{200:{description:"Trial instance list",content:{"application/json":{schema:Yt(Ud)}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"list"}}})},"/api/trials/instances/{instanceId}":{get:R({operationId:"getTrialInstance",requestParams:{path:z$1.object({instanceId:z$1.string()})},summary:"Get trial instance",tags:["trials"],responses:{200:{description:"Trial instance",content:{"application/json":{schema:Ud}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"get"}}})},"/api/trials/instances/{instanceId}/cancel":{post:R({operationId:"cancelTrialInstance",requestParams:{path:z$1.object({instanceId:z$1.string()})},summary:"Cancel an active trial",tags:["trials"],responses:{200:{description:"Cancelled",content:{"application/json":{schema:Ud}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"update"}}})},"/api/trials/instances/{instanceId}/convert":{post:R({operationId:"convertTrialInstance",requestParams:{path:z$1.object({instanceId:z$1.string()})},summary:"Convert trial to paid subscription",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({plan_id:z$1.string().optional()})}}},responses:{200:{description:"Converted",content:{"application/json":{schema:Ud}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"update"}}})}});var {Unrestricted:Mt,Financial:Bd}=ji,{Persisted:tc,Transient:Dd}=Ys,{External:Rs}=Wi,WI=Mn(un.Playbook,{sdkInput:true}),XI=Mn(un.Playbook,{sdkInput:false}),rp=Mn(un.Billing,{sdkInput:false}),Xs=z$1.enum(["public","unlisted","legacy"]).meta({id:"PlanVisibility","x-revturbine-schema-persistence":Dd,"x-revturbine-schema-exposure":Rs}),nc=z$1.enum(["flat","per_unit","tiered","metered"]).meta({id:"PricingModel","x-revturbine-schema-persistence":Dd,"x-revturbine-schema-exposure":Rs}),Md=z$1.enum(["stripe","static"]).meta({id:"PriceSource","x-revturbine-schema-persistence":Dd,"x-revturbine-schema-exposure":Rs}),po=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...Mt,readOnly:true}),name:ks.meta(Mt),handle:Jn.meta(Mt),tier_position:z$1.number().int().min(0).default(0).meta(Mt),sort_order:z$1.number().int().default(0).meta(Mt),visibility:Xs.default("public").meta(Mt),metadata:ci.meta(Mt)}).meta({id:"Plan","x-revturbine-schema-persistence":tc,"x-revturbine-schema-exposure":Rs,...WI,...Ji()}),JI=Cr("PlanAnchor"),fo=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...Mt,readOnly:true}),handle:Jn.meta({...Mt,readOnly:true}),plan_id:z$1.string().min(1).meta(Mt),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(Mt),segment_id:z$1.string().nullable().default(null).meta(Mt),price_amount:z$1.number().min(0).meta(Bd),pricing_model:nc.meta(Mt),visibility:Xs.default("public").meta(Mt),stripe_price_id:z$1.string().optional().meta(Mt),price_source:Md.default("static").meta(Mt)}).meta({id:"PlanVariation","x-revturbine-schema-persistence":tc,"x-revturbine-schema-exposure":Rs,...rp,...Li()}),QI=Cr("PlanVariationAnchor"),ho=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...Mt,readOnly:true}),name:ks.meta(Mt),handle:Jn.meta(Mt),sort_order:z$1.number().int().default(0).meta(Mt),visibility:Xs.default("public").meta(Mt),metadata:ci.meta(Mt)}).meta({id:"AddOn","x-revturbine-schema-persistence":tc,"x-revturbine-schema-exposure":Rs,...XI,...Ji()}),eP=Cr("AddOnAnchor"),go=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...Mt,readOnly:true}),handle:Jn.meta({...Mt,readOnly:true}),addon_id:z$1.string().min(1).meta(Mt),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(Mt),segment_id:z$1.string().nullable().default(null).meta(Mt),price_amount:z$1.number().min(0).meta(Bd),pricing_model:nc.meta(Mt),visibility:Xs.default("public").meta(Mt),stripe_price_id:z$1.string().optional().meta(Mt),price_source:Md.default("static").meta(Mt)}).meta({id:"AddOnVariation","x-revturbine-schema-persistence":tc,"x-revturbine-schema-exposure":Rs,...rp,...Li()}),tP=Cr("AddOnVariationAnchor"),nP=z$1.enum(["monthly","annual","one_time","custom"]).meta({id:"StripePriceBillingPeriod","x-revturbine-schema-persistence":Dd,"x-revturbine-schema-exposure":Rs}),_o=bn.merge(kn).merge(Rn).extend({stripe_price_id:z$1.string().min(1).meta(Mt),stripe_product_id:z$1.string().min(1).meta(Mt),billing_period:nP.meta(Mt),unit_amount_cents:z$1.number().int().min(0).nullable().default(null).meta(Bd),currency:cg.meta(Bd),pricing_model:nc.meta(Mt),nickname:z$1.string().nullable().default(null).meta(Mt),is_mock:z$1.boolean().default(false).meta(Mt),last_updated_from_stripe:Ed.meta(Mt)}).meta({id:"StripePrice","x-revturbine-schema-persistence":tc,"x-revturbine-schema-exposure":Rs,...rp}),rP=Jr(po),iP=Jr(fo),sP=Jr(ho),aP=Jr(go),oP=Jr(_o);({"/api/plan-anchors":{get:R({operationId:"listPlanAnchors",requestParams:{query:Wt},summary:"List plan anchors (identity registry)",tags:["plans"],responses:{200:{description:"Plan anchor list",content:{"application/json":{schema:Yt(JI)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"plan-anchors",persistence:{table:"plans",mode:"list"}}})},"/api/plans":{get:R({operationId:"listPlans",requestParams:{query:Wt},summary:"List plans",tags:["plans"],responses:{200:{description:"Plan list response",content:{"application/json":{schema:Yt(po)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"list"}}}),post:R({operationId:"createPlan",summary:"Create plan",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Tr(po)}}},responses:{201:{description:"Created plan",content:{"application/json":{schema:po}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"create"}}})},"/api/plans/{planId}":{get:R({operationId:"getPlan",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Get plan by ID",tags:["plans"],responses:{200:{description:"Plan detail",content:{"application/json":{schema:po}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"get"}}}),patch:R({operationId:"updatePlan",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Update plan",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:rP}}},responses:{200:{description:"Updated plan",content:{"application/json":{schema:po}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"update"}}}),delete:R({operationId:"deletePlan",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Delete plan",tags:["plans"],responses:{204:{description:"Plan deleted"},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"delete"}}})},"/api/plans/reorder":{post:R({operationId:"reorderPlans",summary:"Reorder plans",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({ids:z$1.array(z$1.string())})}}},responses:{200:{description:"Reordered"}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"reorder"}}})},"/api/plan-variation-anchors":{get:R({operationId:"listPlanVariationAnchors",requestParams:{query:Wt},summary:"List plan variation anchors (identity registry)",tags:["plans"],responses:{200:{description:"Plan variation anchor list",content:{"application/json":{schema:Yt(QI)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"plan-variation-anchors",persistence:{table:"planVariations",mode:"list"}}})},"/api/plans/{planId}/variations":{get:R({operationId:"listPlanVariations",requestParams:{path:z$1.object({planId:z$1.string()}),query:Wt},summary:"List plan variations",tags:["plans"],responses:{200:{description:"Plan variations",content:{"application/json":{schema:Yt(fo)}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"list"}}}),post:R({operationId:"createPlanVariation",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Create plan variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Tr(fo)}}},responses:{201:{description:"Created plan variation",content:{"application/json":{schema:fo}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"create"}}})},"/api/plan-variations/{variationId}":{get:R({operationId:"getPlanVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Get plan variation by ID",tags:["plans"],responses:{200:{description:"Plan variation detail",content:{"application/json":{schema:fo}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"get"}}}),patch:R({operationId:"updatePlanVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Update plan variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:iP}}},responses:{200:{description:"Updated plan variation",content:{"application/json":{schema:fo}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"update"}}}),delete:R({operationId:"deletePlanVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Delete plan variation",tags:["plans"],responses:{204:{description:"Plan variation deleted"}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"delete"}}})},"/api/addon-anchors":{get:R({operationId:"listAddOnAnchors",requestParams:{query:Wt},summary:"List add-on anchors (identity registry)",tags:["plans"],responses:{200:{description:"Add-on anchor list",content:{"application/json":{schema:Yt(eP)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"addon-anchors",persistence:{table:"addons",mode:"list"}}})},"/api/addons":{get:R({operationId:"listAddOns",requestParams:{query:Wt},summary:"List add-ons",tags:["plans"],responses:{200:{description:"Add-on list",content:{"application/json":{schema:Yt(ho)}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"list"}}}),post:R({operationId:"createAddOn",summary:"Create add-on",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Tr(ho)}}},responses:{201:{description:"Created add-on",content:{"application/json":{schema:ho}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"create"}}})},"/api/addons/{addonId}":{get:R({operationId:"getAddOn",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Get add-on by ID",tags:["plans"],responses:{200:{description:"Add-on detail",content:{"application/json":{schema:ho}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"get"}}}),patch:R({operationId:"updateAddOn",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Update add-on",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:sP}}},responses:{200:{description:"Updated add-on",content:{"application/json":{schema:ho}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"update"}}}),delete:R({operationId:"deleteAddOn",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Delete add-on",tags:["plans"],responses:{204:{description:"Add-on deleted"}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"delete"}}})},"/api/addon-variation-anchors":{get:R({operationId:"listAddOnVariationAnchors",requestParams:{query:Wt},summary:"List add-on variation anchors (identity registry)",tags:["plans"],responses:{200:{description:"Add-on variation anchor list",content:{"application/json":{schema:Yt(tP)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"addon-variation-anchors",persistence:{table:"addonVariations",mode:"list"}}})},"/api/addons/{addonId}/variations":{get:R({operationId:"listAddOnVariations",requestParams:{path:z$1.object({addonId:z$1.string()}),query:Wt},summary:"List add-on variations",tags:["plans"],responses:{200:{description:"Add-on variations",content:{"application/json":{schema:Yt(go)}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"list"}}}),post:R({operationId:"createAddOnVariation",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Create add-on variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Tr(go)}}},responses:{201:{description:"Created variation",content:{"application/json":{schema:go}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"create"}}})},"/api/addon-variations/{variationId}":{get:R({operationId:"getAddOnVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Get add-on variation by ID",tags:["plans"],responses:{200:{description:"Add-on variation detail",content:{"application/json":{schema:go}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"get"}}}),patch:R({operationId:"updateAddOnVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Update add-on variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:aP}}},responses:{200:{description:"Updated variation",content:{"application/json":{schema:go}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"update"}}}),delete:R({operationId:"deleteAddOnVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Delete add-on variation",tags:["plans"],responses:{204:{description:"Variation deleted"}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"delete"}}})},"/api/stripe-prices":{get:R({operationId:"listStripePrices",requestParams:{query:Wt},summary:"List Stripe prices",tags:["plans"],responses:{200:{description:"Stripe price list",content:{"application/json":{schema:Yt(_o)}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"list"}}}),post:R({operationId:"createStripePrice",summary:"Create Stripe price",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Tr(_o)}}},responses:{201:{description:"Created Stripe price",content:{"application/json":{schema:_o}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"create"}}})},"/api/stripe-prices/{id}":{get:R({operationId:"getStripePrice",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Get Stripe price by ID",tags:["plans"],responses:{200:{description:"Stripe price detail",content:{"application/json":{schema:_o}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"get"}}}),patch:R({operationId:"updateStripePrice",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Update Stripe price",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:oP}}},responses:{200:{description:"Updated Stripe price",content:{"application/json":{schema:_o}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"update"}}}),delete:R({operationId:"deleteStripePrice",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Delete Stripe price",tags:["plans"],responses:{204:{description:"Stripe price deleted"}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"delete"}}})}});var {Unrestricted:f}=ji,{Persisted:yo,Transient:We}=Ys,{Internal:vi,External:yt}=Wi,mt=Mn(un.Playbook,{sdkInput:true}),bo=Mn(un.Playbook,{sdkInput:false}),Ws=Mn(un.Playbook,{inConfig:false,sdkInput:false}),$g=Mn(un.Playbook,{inConfig:false,sdkInput:true}),Zl=Mn(un.Playbook,{inConfig:false,sdkInput:true,source:Fi.CodeConstant}),Wm=Mn(un.Playbook,{inConfig:false,sdkInput:true,source:Fi.Runtime}),Xm=Mn(un.Playbook,{inConfig:false,sdkInput:false,source:Fi.Runtime}),lP=Mn(un.Billing,{sdkInput:false}),cP=Mn(un.Metering,{sdkInput:false}),dP=Mn(un.Branding,{inConfig:true,sdkInput:true}),uP=Mn(un.Branding,{sdkInput:false}),mP="1.0.0",Yl=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...f,readOnly:true}),name:ks.meta(f),handle:Jn.meta(f),description:Rd.meta(f),is_default:z$1.boolean().default(false).meta(f),entitlement_ids:z$1.array(z$1.string()).default([]).meta(f),metadata:ci.meta(f)}).meta({id:"SeatType","x-revturbine-schema-persistence":yo,"x-revturbine-schema-exposure":vi,...Ws,...Ji()}),pP=Cr("SeatTypeAnchor"),Wl=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...f,readOnly:true}),handle:Jn.meta(f),label:z$1.string().min(1).meta(f),description:z$1.string().nullable().default(null).meta(f),category:z$1.enum(["user","plan","usage","trial","billing","promotion","custom"]).meta(f),data_source:z$1.string().nullable().default(null).meta(f),example_value:z$1.string().nullable().default(null).meta(f),value_map:z$1.record(z$1.string(),z$1.string()).default({}).meta(f),format:z$1.enum(["string","number","currency","percentage","date"]).nullable().default(null).meta(f),metadata:ci.meta(f)}).meta({id:"PersonalizationToken","x-revturbine-schema-persistence":yo,"x-revturbine-schema-exposure":vi,...Ws,...Ji()}),fP=Cr("PersonalizationTokenAnchor"),hP=z$1.enum(["not_started","started","details_submitted","charges_enabled","activated","deauthorized"]).meta({id:"OnboardingState","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":vi}),Jm=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({handle:Jn.meta({...f,readOnly:true}),stripe_account_id:z$1.string().min(1).meta(f),live_mode:z$1.boolean().default(false).meta(f),onboarding_state:hP.default("not_started").meta({...f,readOnly:true}),onboarding_complete:z$1.boolean().default(false).meta({...f,readOnly:true}),charges_enabled:z$1.boolean().default(false).meta({...f,readOnly:true}),details_submitted:z$1.boolean().default(false).meta({...f,readOnly:true}),payouts_enabled:z$1.boolean().default(false).meta({...f,readOnly:true}),webhook_secret_set:z$1.boolean().default(false).meta({...f,readOnly:true}),sync_products:z$1.boolean().default(true).meta(f),sync_prices:z$1.boolean().default(true).meta(f),sync_subscriptions:z$1.boolean().default(true).meta(f),sync_invoices:z$1.boolean().default(false).meta(f),default_currency:z$1.string().length(3).default("USD").meta(f),tax_behavior:z$1.enum(["inclusive","exclusive","unspecified"]).default("unspecified").meta(f),last_sync_at:z$1.string().optional().meta({...f,readOnly:true}),metadata:ci.meta(f)}).meta({id:"StripeIntegrationConfig","x-revturbine-schema-persistence":yo,"x-revturbine-schema-exposure":vi,...lP,...Li()});z$1.object({theme:z$1.record(z$1.string(),z$1.unknown()).optional().meta(f),workspace_name:z$1.string().optional().meta(f),logo_url:z$1.string().optional().meta(f),support_email:z$1.string().optional().meta(f)}).meta({id:"BrandingConfig","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...uP});var Xl=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({handle:Jn.meta({...f,readOnly:true}),entitlement_id:z$1.string().min(1).meta(f),meter_key:z$1.string().min(1).max(100).meta(f),aggregation_type:z$1.enum(["sum","count","max","last_value"]).default("sum").meta(f),reset_period:z$1.enum(["none","daily","weekly","monthly","yearly"]).default("monthly").meta(f),stripe_meter_id:z$1.string().nullable().default(null).meta(f),is_active:z$1.boolean().default(true).meta(f),metadata:ci.meta(f)}).meta({id:"MeteringConfig","x-revturbine-schema-persistence":yo,"x-revturbine-schema-exposure":vi,...cP,...Li()}),Ag=z$1.enum(["block","warn","downgrade","throttle","notify_admin","custom"]).meta({id:"EnforcementAction","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":vi}),Jl=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...f,readOnly:true}),handle:Jn.meta({...f,readOnly:true}),entitlement_id:z$1.string().min(1).meta(f),soft_limit_percent:z$1.number().min(0).max(100).default(80).meta(f),hard_limit_percent:z$1.number().min(0).max(100).default(100).meta(f),soft_limit_action:Ag.default("warn").meta(f),hard_limit_action:Ag.default("block").meta(f),grace_period_hours:z$1.number().int().min(0).default(0).meta(f),notification_channels:z$1.array(z$1.enum(["email","in_app","webhook"])).default(["in_app"]).meta(f),is_active:z$1.boolean().default(true).meta(f)}).meta({id:"UsageEnforcementSettings","x-revturbine-schema-persistence":yo,"x-revturbine-schema-exposure":vi,...$g,...Li()}),gP=Cr("UsageEnforcementSettingsAnchor"),_P=z$1.object({kind:z$1.enum(["template","slot"]).meta(f),id:z$1.string().min(1).meta(f),label:z$1.string().min(1).optional().meta(f)}).meta({id:"PlacementSettingsCapRuleGroupItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":vi}),bP=z$1.object({id:z$1.string().min(1).meta(f),group:z$1.array(_P).min(1).meta(f),cap:z$1.object({count:z$1.number().int().min(1).meta(f),period:z$1.enum(["session","day","week","month"]).meta(f)}).meta(f)}).meta({id:"PlacementSettingsCapRule","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":vi}),vP=z$1.enum(["off","test_users","all_traffic"]).meta({id:"PlacementTestMode","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":vi}),Zg=z$1.object({capRules:z$1.array(bP).default([]).meta(f),sessionCooldownMinutes:z$1.number().int().min(0).default(30).meta(f),remindLaterMinutes:z$1.number().int().min(0).default(60).meta(f),testMode:vP.default("off").meta(f)}).meta({id:"PlacementSettingsCapState","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":vi}),Qm=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...f,readOnly:true}),handle:Jn.meta({...f,readOnly:true}),global_frequency_cap:Zg.nullable().default(null).meta(f),global_frequency_cap_period:z$1.enum(["hour","day","week","month","session"]).nullable().default(null).meta(f),suppress_for_paid:z$1.boolean().default(false).meta(f),suppress_for_trial:z$1.boolean().default(false).meta(f),allow_stacking:z$1.boolean().default(false).meta(f),priority_collision_strategy:z$1.enum(["highest_priority","most_recent","random"]).default("highest_priority").meta(f)}).meta({id:"PlacementSettings","x-revturbine-schema-persistence":yo,"x-revturbine-schema-exposure":vi,...$g,...Li()}),yP=Cr("PlacementSettingsAnchor"),xP=z$1.object({field:z$1.string().min(1).meta(f),operator:z$1.enum(["eq","neq","gt","lt","gte","lte","contains","in"]).meta(f),value:z$1.string().meta(f)}).meta({id:"RevTurbineConfigSegmentsItemPredicatesItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt}),SP=z$1.object({name:z$1.string().min(1).meta(f),handle:z$1.string().min(1).meta(f),predicates:z$1.array(xP).optional().meta(f),dimension_id:z$1.string().optional().meta(f),experiment_id:z$1.string().min(1).optional().meta(f)}).meta({id:"RevTurbineConfigSegmentsItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),IP=z$1.object({unique_handle:z$1.string().min(1).meta(f),name:z$1.string().min(1).meta(f),tier_position:z$1.number().int().min(0).default(0).meta(f),sort_order:z$1.number().int().min(0).default(0).meta(f),visibility:Xs.default("public").meta(f)}).meta({id:"RevTurbineConfigPlansItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),PP=z$1.object({unique_handle:z$1.string().min(1).meta(f),name:z$1.string().min(1).meta(f),sort_order:z$1.number().int().min(0).default(0).meta(f),visibility:Xs.default("public").meta(f)}).meta({id:"RevTurbineConfigAddonsItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...bo}),TP=z$1.object({handle:z$1.string().min(1).meta(f),plan_handle:z$1.string().min(1).meta(f),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(f),segment_handle:z$1.string().nullable().default(null).meta(f),price_amount:z$1.number().min(0).meta(f),pricing_model:nc.meta(f),visibility:Xs.default("public").meta(f),stripe_price_id:z$1.string().nullable().default(null).meta(f),price_source:Md.meta(f)}).meta({id:"RevTurbineConfigPlanVariationsItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...Ws}),CP=z$1.object({handle:z$1.string().min(1).meta(f),addon_handle:z$1.string().min(1).meta(f),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(f),segment_handle:z$1.string().nullable().default(null).meta(f),price_amount:z$1.number().min(0).meta(f),pricing_model:nc.meta(f),visibility:Xs.default("public").meta(f),stripe_price_id:z$1.string().nullable().default(null).meta(f),price_source:Md.meta(f)}).meta({id:"RevTurbineConfigAddonVariationsItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...Ws}),kP=z$1.object({handle:z$1.string().min(1).meta(f),name:z$1.string().min(1).meta(f),description:z$1.string().nullable().default(null).meta(f),is_default:z$1.boolean().default(false).meta(f),entitlement_handles:z$1.array(z$1.string()).default([]).meta(f)}).meta({id:"RevTurbineConfigSeatTypesItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),RP=z$1.object({handle:z$1.string().min(1).meta(f),entitlement_handle:z$1.string().nullable().default(null).meta(f),soft_limit_percent:z$1.number().int().min(0).nullable().default(null).meta(f),hard_limit_percent:z$1.number().int().min(0).nullable().default(null).meta(f),soft_limit_action:z$1.string().meta(f),hard_limit_action:z$1.string().meta(f),grace_period_hours:z$1.number().int().min(0).nullable().default(null).meta(f),notification_channels:z$1.array(z$1.string()).default([]).meta(f),is_active:z$1.boolean().default(true).meta(f)}).meta({id:"RevTurbineConfigEnforcementDefaultsItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),EP=z$1.object({handle:z$1.string().min(1).meta(f),global_frequency_cap:Zg.nullable().default(null).meta(f),global_frequency_cap_period:z$1.enum(["hour","day","week","month","session"]).nullable().default(null).meta(f),suppress_for_paid:z$1.boolean().default(false).meta(f),suppress_for_trial:z$1.boolean().default(false).meta(f),allow_stacking:z$1.boolean().default(false).meta(f),priority_collision_strategy:z$1.string().nullable().default(null).meta(f)}).meta({id:"RevTurbineConfigPlacementSettingsItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),wP=z$1.object({handle:z$1.string().min(1).meta(f),name:z$1.string().min(1).meta(f),category:z$1.string().nullable().default(null).meta(f),visibility_toggle:z$1.boolean().default(true).meta(f),source_type:z$1.string().nullable().default(null).meta(f)}).meta({id:"RevTurbineConfigSegmentDimensionsItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),OP=z$1.object({handle:z$1.string().min(1).meta(f),entitlement_handle:z$1.string().min(1).meta(f),meter_handle:z$1.string().min(1).meta(f),limit:z$1.number().int().min(0).nullable().default(null).meta(f),reset_period:z$1.string().nullable().default(null).meta(f)}).meta({id:"RevTurbineConfigMeterBindingsItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),AP=z$1.object({unique_handle:z$1.string().min(1).meta(f),name:z$1.string().min(1).meta(f),type:kd.meta(f),unit:z$1.string().optional().meta(f),tier_definitions:z$1.array(z$1.object({name:z$1.string(),handle:z$1.string(),description:z$1.string().optional()})).optional().meta(f)}).meta({id:"RevTurbineConfigEntitlementsItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),Yg=z$1.object({id:z$1.string().min(1).meta(f),entitlement_id:z$1.string().min(1).meta(f),targets:z$1.array(Dg).min(1).meta(f),segment_ids:z$1.array(z$1.string()).default([]).meta(f),kind:kd.optional().meta({...f,readOnly:true}),unit:z$1.string().optional().meta({...f,readOnly:true}),tier_name:z$1.string().optional().meta({...f,readOnly:true}),tier_description:z$1.string().optional().meta({...f,readOnly:true}),...vo.pick({enabled:true,limit_value:true,enforcement:true,tier_value:true,period_scope:true,included_count:true,seat_type_id:true,initial_grant:true,allowance_value:true,rollover_enabled:true,max_balance:true,reset_period:true,max_seats:true,rate_value:true,amount_cents:true,currency:true}).shape,current_usage:z$1.number().default(0).meta(f),allocation:qd.optional().meta(f)}).meta({id:"RevTurbineConfigEntitlementRulesItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),jP=z$1.object({slot_id:z$1.string().min(1).meta(f),active:z$1.boolean().meta(f),triggers:z$1.array(z$1.string()).meta(f)}).meta({id:"RevTurbineConfigSlotConfigsItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),FP=z$1.object({id:z$1.string().min(1).meta(f),label:z$1.string().min(1).meta(f),description:z$1.string().meta(f),surface_type:z$1.string().meta(f),placement_handle:z$1.string().min(1).meta(f),template:z$1.string().optional().meta(f)}).meta({id:"RevTurbineConfigPlacementSlotsItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),LP=z$1.object({name:z$1.string().min(1).meta(f),type:z$1.string().optional().meta(f),required:z$1.boolean().optional().meta(f)}).meta({id:"RevTurbineConfigSurfaceTemplatesItemFieldsItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt}),VP=z$1.object({id:z$1.string().min(1).meta(f),surface_type:z$1.string().meta(f),fields:z$1.array(LP).optional().meta(f)}).meta({id:"RevTurbineConfigSurfaceTemplatesItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),UP=z$1.enum(["open_checkout_modal","navigate_to_plans","open_upgrade_modal","open_placement","book_demo","open_feature_tour","extend_trial","switch_billing_period","custom_url","dismiss","contact_sales","complete_onboarding","invite_teammate","refer_friend","verify_work_email","update_payment_method","enable_auto_renewal","manage_subscription","snooze"]).meta({id:"RevTurbineConfigUiPathActionType","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt}),BP=z$1.object({name:z$1.string().min(1).meta(f),action_type:UP.meta(f),plan_handle:z$1.string().optional().meta(f),promotion_id:z$1.string().optional().meta(f),placement_handle:z$1.string().optional().meta(f),url:z$1.string().optional().meta(f),tour_id:z$1.string().optional().meta(f),target_billing_period:z$1.enum(["monthly","annual"]).optional().meta(f),description:z$1.string().optional().meta(f)}).meta({id:"ContentUiPath","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),qP=z$1.object({id:z$1.string().meta(f),name:z$1.string().meta(f),discount:z$1.string().meta(f),type:z$1.string().meta(f),status:z$1.string().meta(f)}).meta({id:"ContentPromotion","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),DP=z$1.object({token:z$1.string().regex(/^[a-z][a-z0-9_]*$/).meta(f),label:z$1.string().min(1).meta(f),description:z$1.string().optional().meta(f),category:z$1.enum(["user","plan","usage","trial","billing","promotion","custom"]).meta(f),data_source:z$1.string().optional().meta(f),example_value:z$1.string().optional().meta(f),value_map:z$1.record(z$1.string(),z$1.string()).optional().meta(f),format:z$1.enum(["string","number","currency","percentage","date"]).optional().meta(f)}).meta({id:"RevTurbineConfigPersonalizationTokensItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),jg=z$1.object({header:z$1.string().optional().meta(f),body:z$1.string().optional().meta(f),cta_label:z$1.string().optional().meta(f),secondary_cta_label:z$1.string().optional().meta(f)}).catchall(z$1.unknown()).meta({id:"MessageBlockContent","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt}),MP=z$1.object({block_id:z$1.string().min(1).meta(f),tenant_id:z$1.string().min(1).meta(f),name:z$1.string().min(1).meta(f),surface_template_id:z$1.string().optional().meta(f),default_content:jg.meta(f),segment_overrides:z$1.array(z$1.object({segment_value_id:z$1.string(),content:jg})).optional().meta(f),child_blocks:z$1.array(z$1.object({slot:z$1.string(),block_id:z$1.string()})).optional().meta(f),tokens_used:z$1.array(z$1.string()).optional().meta(f),status:z$1.enum(["draft","active","archived"]).meta(f),created_at:z$1.string().datetime().meta({...f,readOnly:true}),updated_at:z$1.string().datetime().meta({...f,readOnly:true})}).meta({id:"MessageBlock","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),NP=z$1.object({label:z$1.string().meta(f),path:dg.meta(f),config:z$1.record(z$1.string(),z$1.string()).optional().meta(f)}).meta({id:"RevTurbineConfigStudioCtaConfig","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt}),Wg=z$1.object({template_id:z$1.string().min(1).meta(f),fields:z$1.record(z$1.string(),z$1.string()).meta(f),ctas:z$1.array(NP).meta(f)}).meta({id:"RevTurbineConfigStudioPayloadSurface","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt}),Xg=z$1.object({plan_ids:z$1.array(z$1.string()).meta(f),billing_cadences:z$1.array(z$1.string()).optional().meta(f),segment_chips:z$1.array(z$1.string()).meta(f)}).meta({id:"RevTurbineConfigStudioPayloadTarget","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt}),HP=z$1.object({count:z$1.number().int().min(1).meta(f),period:z$1.enum(["session","day","week","month","lifetime"]).meta(f)}).meta({id:"RevTurbineConfigPeriodCap","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt}),Jg=z$1.object({max_per_period:HP.optional().meta(f),cooldown_days:z$1.number().int().min(0).optional().meta(f)}).meta({id:"RevTurbineConfigStudioPayloadCaps","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt}),zP=z$1.object({id:z$1.string().min(1).meta(f),target:Xg.meta(f),surfaces:z$1.array(Wg).meta(f),caps:Jg.optional().meta(f),surface_slot_ids:z$1.array(z$1.string()).optional().meta(f),remind_later_minutes:z$1.number().int().min(0).nullable().optional().meta(f),created_at:z$1.string().optional().meta({...f,readOnly:true}),recommendation_strategy:z$1.enum(["next_tier_up","best_value","custom"]).optional().default("next_tier_up").meta(f),recommendation_plan_override:z$1.string().optional().meta(f)}).meta({id:"RevTurbineConfigStudioPayload","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt}),KP=z$1.discriminatedUnion("type",[z$1.object({type:z$1.literal("surface_render"),slot_id:z$1.string().min(1)}),z$1.object({type:z$1.literal("entitlement_gate"),entitlement_handle:z$1.string().min(1),tier_threshold:z$1.string().optional()}),z$1.object({type:z$1.literal("usage_threshold"),entitlement_handle:z$1.string().min(1),threshold_percent:Ra}),z$1.object({type:z$1.literal("credit_threshold"),entitlement_handle:z$1.string().min(1),threshold_percent:Ra}),z$1.object({type:z$1.literal("seat_threshold"),entitlement_handle:z$1.string().min(1),threshold_percent:Ra}),z$1.object({type:z$1.literal("trial_started"),trial_type:z$1.enum(["free","reverse"]).optional()}),z$1.object({type:z$1.literal("trial_progress"),progress_percent:z$1.number().min(1).max(100)}),z$1.object({type:z$1.literal("trial_ending"),days_before_end:z$1.number().int().min(0)}),z$1.object({type:z$1.literal("trial_ended")}),z$1.object({type:z$1.literal("trial_converted")}),z$1.object({type:z$1.literal("qualifier"),qualifier:z$1.string().min(1)})]).meta({id:"RevTurbineConfigPlacementTrigger","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt}),GP=z$1.enum(["fixed","gated","usage_credit_seat","trials","other_conversion","retention"]).meta({id:"RevTurbineConfigPlacementCategory","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt}),$P=z$1.object({id:z$1.string().min(1).meta(f),name:z$1.string().min(1).meta(f),category:GP.meta(f),trigger:KP.meta(f),payloads:z$1.array(zP).meta(f),order:z$1.number().int().min(0).meta(f)}).meta({id:"RevTurbineConfigPlacementItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),ZP=z$1.object({payload_id:z$1.string().min(1).meta(f),placement_id:z$1.string().min(1).meta(f),target:Xg.meta(f),caps:Jg.optional().meta(f),remind_later_minutes:z$1.number().int().min(0).nullable().optional().meta(f),created_at:z$1.string().meta({...f,readOnly:true}),updated_at:z$1.string().datetime().optional().meta({...f,readOnly:true}),source_mode:z$1.enum(["inline","content_linked"]).meta(f),surfaces:z$1.array(Wg).optional().meta(f),surface_slot_ids:z$1.array(z$1.string()).optional().meta(f),content_link:z$1.object({message_block_id:z$1.string().optional(),ui_path_id:z$1.string().optional(),promotion_id:z$1.string().optional(),content_payload_id:z$1.string().optional()}).optional().meta(f)}).meta({id:"RevTurbineConfigPlacementPayloadItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),YP=z$1.object({kind:z$1.string().min(1).meta(f),schema_version:z$1.number().int().nonnegative().meta(f),config:z$1.unknown().meta(f)}).meta({id:"RevTurbineConfigExtensionRulesItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),WP=bn.merge(Hg).meta({id:"RevTurbineConfigFreeTrialRuleItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...Ws}),XP=bn.merge(zg).meta({id:"RevTurbineConfigReverseTrialRuleItem","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...Ws}),JP=z$1.object({plans:z$1.array(IP).meta({...f,...mt}),addons:z$1.array(PP).optional().meta({...f,...bo}),entitlements:z$1.array(AP).meta({...f,...mt}),entitlement_rules:z$1.array(Yg).meta({...f,...mt}),segments:z$1.array(SP).meta({...f,...mt}),content_ui_paths:z$1.array(BP).meta({...f,...mt}),slot_configs:z$1.array(jP).optional().meta({...f,...mt,...Gm({since:"0.1.117",replacement:"SDK-local activation/trigger state",removeAfter:"one compatibility window",reason:"Slot activation moved to SDK-local state (plan 118 TASK-6); no longer a Playbook authoring input."})}),content_overrides:z$1.record(z$1.string(),z$1.record(z$1.string(),z$1.string())).optional().meta({...f,...mt,...Gm({since:"0.1.117",replacement:"Message Block / Placement Payload content",removeAfter:"one compatibility window",reason:"Content overrides moved to Message Block / Payload content (plan 118 TASK-6); no longer a Playbook authoring input."})}),theme:z$1.record(z$1.string(),z$1.unknown()).optional().meta({...f,...dP,...Gm({since:"0.1.111",replacement:"SDK branding argument",removeAfter:"one compatibility window",reason:"Branding is independently owned and is not Playbook strategy."})}),placement_slots:z$1.array(FP).optional().meta({...f,...mt}),message_blocks:z$1.array(MP).optional().meta({...f,...mt}),placement_payloads:z$1.array(ZP).optional().meta({...f,...mt}),placements:z$1.array($P).optional().meta({...f,...mt}),content_promotions:z$1.array(qP).optional().meta({...f,...mt}),personalization_tokens:z$1.array(DP).optional().meta({...f,...mt}),surface_templates:z$1.array(VP).optional().meta({...f,...mt}),free_trial_rules:z$1.array(WP).optional().meta({...f,...bo}),reverse_trial_rules:z$1.array(XP).optional().meta({...f,...bo}),plan_variations:z$1.array(TP).optional().meta({...f,...bo}),addon_variations:z$1.array(CP).optional().meta({...f,...bo}),extension_rules:z$1.array(YP).optional().meta({...f,...mt}),seat_types:z$1.array(kP).optional().meta({...f,...mt}),enforcement_defaults:z$1.array(RP).optional().meta({...f,...mt}),placement_settings:z$1.array(EP).optional().meta({...f,...mt}),segment_dimensions:z$1.array(wP).optional().meta({...f,...mt}),meter_bindings:z$1.array(OP).optional().meta({...f,...mt}),experiments:z$1.array(z$1.unknown()).max(0).optional().meta({...f,...Ws}),signal_catalog:z$1.object({}).strict().optional().meta({...f,...Ws})}).meta({id:"PlaybookBody","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt}),QP=z$1.object({artifact_type:z$1.literal("playbook").meta({...f,...Zl,readOnly:true}),format_version:z$1.literal(mP).meta({...f,...Zl,readOnly:true}),playbook_handle:z$1.string().min(1).default("default").meta({...f,...Zl}),playbook_version_id:z$1.string().nullable().default(null).meta({...f,...Wm,readOnly:true}),tenant_id:z$1.string().min(1).optional().meta({...f,...Xm,readOnly:true}),environment_id:z$1.string().min(1).optional().meta({...f,...Xm,readOnly:true}),project_id:z$1.string().min(1).optional().meta({...f,...Xm,readOnly:true}),exported_at:z$1.string().datetime().optional().meta({...f,...Wm,readOnly:true}),schema_version:z$1.string().min(1).optional().meta({...f,...Zl,readOnly:true}),bundle_schema_version:z$1.number().int().nonnegative().optional().meta({...f,...Zl,readOnly:true})}).meta({id:"PlaybookHeader","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...Wm}),Qg=QP.extend(JP.shape).meta({"x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt});function e0(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function e_(n){if(!e0(n))return n;let e={...n};return "artifact_type"in e||(e.artifact_type="playbook"),"version"in e&&("format_version"in e||(e.format_version=e.version),delete e.version),"change_set_id"in e&&("playbook_version_id"in e||(e.playbook_version_id=e.change_set_id),delete e.change_set_id),e}var t_=z$1.preprocess(e_,Qg).meta({id:"Playbook","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt});z$1.preprocess(e_,Qg.strict()).meta({id:"PlaybookStrict","x-revturbine-schema-persistence":We,"x-revturbine-schema-exposure":yt,...mt});({"/api/seat-type-anchors":{get:R({operationId:"listSeatTypeAnchors",requestParams:{query:Wt},summary:"List seat type anchors (identity registry)",tags:["config"],responses:{200:{description:"Seat type anchor list",content:{"application/json":{schema:Yt(pP)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-type-anchors",persistence:{table:"seatTypes",mode:"list"}}})},"/api/config/seat-types":{get:R({operationId:"listSeatTypes",requestParams:{query:Wt},summary:"List seat types",tags:["config"],responses:{200:{description:"Seat type list",content:{"application/json":{schema:Yt(Yl)}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"list"}}}),post:R({operationId:"createSeatType",summary:"Create seat type",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Tr(Yl)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Yl}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"create"}}})},"/api/config/seat-types/{id}":{patch:R({operationId:"updateSeatType",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Update seat type",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Yl.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Yl}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"update"}}}),delete:R({operationId:"deleteSeatType",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Delete seat type",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"delete"}}})},"/api/personalization-token-anchors":{get:R({operationId:"listPersonalizationTokenAnchors",requestParams:{query:Wt},summary:"List personalization token anchors (identity registry)",tags:["config"],responses:{200:{description:"Personalization token anchor list",content:{"application/json":{schema:Yt(fP)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-token-anchors",persistence:{table:"personalizationTokens",mode:"list"}}})},"/api/config/personalization-tokens":{get:R({operationId:"listPersonalizationTokens",requestParams:{query:Wt},summary:"List personalization tokens",tags:["config"],responses:{200:{description:"Personalization token list",content:{"application/json":{schema:Yt(Wl)}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"list"}}}),post:R({operationId:"createPersonalizationToken",summary:"Create personalization token",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Tr(Wl)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Wl}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"create"}}})},"/api/config/personalization-tokens/{id}":{patch:R({operationId:"updatePersonalizationToken",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Update personalization token",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Wl.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Wl}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"update"}}}),delete:R({operationId:"deletePersonalizationToken",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Delete personalization token",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"delete"}}})},"/api/config/stripe":{put:R({operationId:"upsertStripeIntegrationConfig",summary:"Create or update Stripe integration config",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Jr(Jm)}}},responses:{200:{description:"Saved",content:{"application/json":{schema:Jm}}}},"x-revturbine-operation":{exposure:"internal",resource:"stripe-config",persistence:{table:"stripeIntegrationConfig",mode:"upsert"}}})},"/api/config/metering":{get:R({operationId:"listMeteringConfigs",requestParams:{query:Wt},summary:"List metering configurations",tags:["config"],responses:{200:{description:"Metering config list",content:{"application/json":{schema:Yt(Xl)}}}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"list"}}}),post:R({operationId:"createMeteringConfig",summary:"Create metering configuration",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Tr(Xl)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Xl}}}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"create"}}})},"/api/config/metering/{meteringId}":{patch:R({operationId:"updateMeteringConfig",requestParams:{path:z$1.object({meteringId:z$1.string()})},summary:"Update metering configuration",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Xl.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Xl}}}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"update"}}}),delete:R({operationId:"deleteMeteringConfig",requestParams:{path:z$1.object({meteringId:z$1.string()})},summary:"Delete metering configuration",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"delete"}}})},"/api/usage-enforcement-setting-anchors":{get:R({operationId:"listUsageEnforcementSettingsAnchors",requestParams:{query:Wt},summary:"List usage enforcement setting anchors (identity registry)",tags:["config"],responses:{200:{description:"Usage enforcement setting anchor list",content:{"application/json":{schema:Yt(gP)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement-setting-anchors",persistence:{table:"usageEnforcementSettings",mode:"list"}}})},"/api/config/usage-enforcement":{get:R({operationId:"listUsageEnforcementSettings",requestParams:{query:Wt},summary:"List usage enforcement settings",tags:["config"],responses:{200:{description:"Enforcement settings",content:{"application/json":{schema:Yt(Jl)}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"list"}}}),post:R({operationId:"createUsageEnforcementSettings",summary:"Create usage enforcement settings",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Tr(Jl)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Jl}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"create"}}})},"/api/config/usage-enforcement/{settingsId}":{patch:R({operationId:"updateUsageEnforcementSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Update usage enforcement settings",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Jl.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Jl}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"update"}}}),delete:R({operationId:"deleteUsageEnforcementSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Delete usage enforcement settings",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"delete"}}})},"/api/placement-setting-anchors":{get:R({operationId:"listPlacementSettingsAnchors",requestParams:{query:Wt},summary:"List placement setting anchors (identity registry)",tags:["config"],responses:{200:{description:"Placement setting anchor list",content:{"application/json":{schema:Yt(yP)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-setting-anchors",persistence:{table:"placementSettings",mode:"list"}}})},"/api/config/placement-settings":{put:R({operationId:"upsertPlacementSettings",summary:"Create or update global placement settings",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Jr(Qm)}}},responses:{200:{description:"Saved",content:{"application/json":{schema:Qm}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-settings",persistence:{table:"placementSettingVersions",mode:"upsert"}}})}});var es=new Int32Array(2),Nd=new Float32Array(es.buffer),Hd=new Float64Array(es.buffer),xo=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;var rc;(function(n){n[n.UTF8_BYTES=1]="UTF8_BYTES",n[n.UTF16_STRING=2]="UTF16_STRING";})(rc||(rc={}));var Js=class n{constructor(e){this.bytes_=e,this.position_=0,this.text_decoder_=new TextDecoder;}static allocate(e){return new n(new Uint8Array(e))}clear(){this.position_=0;}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e;}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return BigInt.asIntN(64,BigInt(this.readUint32(e))+(BigInt(this.readUint32(e+4))<<BigInt(32)))}readUint64(e){return BigInt.asUintN(64,BigInt(this.readUint32(e))+(BigInt(this.readUint32(e+4))<<BigInt(32)))}readFloat32(e){return es[0]=this.readInt32(e),Nd[0]}readFloat64(e){return es[xo?0:1]=this.readInt32(e),es[xo?1:0]=this.readInt32(e+4),Hd[0]}writeInt8(e,t){this.bytes_[e]=t;}writeUint8(e,t){this.bytes_[e]=t;}writeInt16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8;}writeUint16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8;}writeInt32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24;}writeUint32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24;}writeInt64(e,t){this.writeInt32(e,Number(BigInt.asIntN(32,t))),this.writeInt32(e+4,Number(BigInt.asIntN(32,t>>BigInt(32))));}writeUint64(e,t){this.writeUint32(e,Number(BigInt.asUintN(32,t))),this.writeUint32(e+4,Number(BigInt.asUintN(32,t>>BigInt(32))));}writeFloat32(e,t){Nd[0]=t,this.writeInt32(e,es[0]);}writeFloat64(e,t){Hd[0]=t,this.writeInt32(e,es[xo?0:1]),this.writeInt32(e+4,es[xo?1:0]);}getBufferIdentifier(){if(this.bytes_.length<this.position_+4+4)throw new Error("FlatBuffers: ByteBuffer is too short to contain an identifier.");let e="";for(let t=0;t<4;t++)e+=String.fromCharCode(this.readInt8(this.position_+4+t));return e}__offset(e,t){let r=e-this.readInt32(e);return t<this.readInt16(r)?this.readInt16(r+t):0}__union(e,t){return e.bb_pos=t+this.readInt32(t),e.bb=this,e}__string(e,t){e+=this.readInt32(e);let r=this.readInt32(e);e+=4;let i=this.bytes_.subarray(e,e+r);return t===rc.UTF8_BYTES?i:this.text_decoder_.decode(i)}__union_with_string(e,t){return typeof e=="string"?this.__string(t):this.__union(e,t)}__indirect(e){return e+this.readInt32(e)}__vector(e){return e+this.readInt32(e)+4}__vector_len(e){return this.readInt32(e+this.readInt32(e))}__has_identifier(e){if(e.length!=4)throw new Error("FlatBuffers: file identifier must be length "+4);for(let t=0;t<4;t++)if(e.charCodeAt(t)!=this.readInt8(this.position()+4+t))return false;return true}createScalarList(e,t){let r=[];for(let i=0;i<t;++i){let s=e(i);s!==null&&r.push(s);}return r}createObjList(e,t){let r=[];for(let i=0;i<t;++i){let s=e(i);s!==null&&r.push(s.unpack());}return r}};var op=14,n_=11,lp=2,cc=4294967295;var gp=class{constructor(){this.bb=null,this.bb_pos=0;}__init(n,e){return this.bb_pos=n,this.bb=e,this}key(){return this.bb.readUint32(this.bb_pos)}value(){return this.bb.readUint32(this.bb_pos+4)}static sizeOf(){return 8}static createContentOverrideEntry(n,e,t){return n.prep(4,8),n.writeInt32(t),n.writeInt32(e),n.offset()}},_p=class ts{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsContentPromotion(e,t){return (t||new ts).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsContentPromotion(e,t){return e.setPosition(e.position()+4),(t||new ts).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}name(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}discount(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}type(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readUint32(this.bb_pos+e):0}status(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint32(this.bb_pos+e):0}static startContentPromotion(e){e.startObject(5);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addName(e,t){e.addFieldInt32(1,t,0);}static addDiscount(e,t){e.addFieldInt32(2,t,0);}static addType(e,t){e.addFieldInt32(3,t,0);}static addStatus(e,t){e.addFieldInt32(4,t,0);}static endContentPromotion(e){return e.endObject()}static createContentPromotion(e,t,r,i,s,a){return ts.startContentPromotion(e),ts.addSourceId(e,t),ts.addName(e,r),ts.addDiscount(e,i),ts.addType(e,s),ts.addStatus(e,a),ts.endContentPromotion(e)}},bp=class ei{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsContentUiPath(e,t){return (t||new ei).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsContentUiPath(e,t){return e.setPosition(e.position()+4),(t||new ei).__init(e.readInt32(e.position())+e.position(),e)}name(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}actionType(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint8(this.bb_pos+e):0}planHandle(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}promotionIdx(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readUint32(this.bb_pos+e):0}placementHandle(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint32(this.bb_pos+e):0}url(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readUint32(this.bb_pos+e):0}tourId(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.readUint32(this.bb_pos+e):0}targetBillingPeriod(){let e=this.bb.__offset(this.bb_pos,18);return e?this.bb.readUint8(this.bb_pos+e):0}description(){let e=this.bb.__offset(this.bb_pos,20);return e?this.bb.readUint32(this.bb_pos+e):0}static startContentUiPath(e){e.startObject(9);}static addName(e,t){e.addFieldInt32(0,t,0);}static addActionType(e,t){e.addFieldInt8(1,t,0);}static addPlanHandle(e,t){e.addFieldInt32(2,t,0);}static addPromotionIdx(e,t){e.addFieldInt32(3,t,0);}static addPlacementHandle(e,t){e.addFieldInt32(4,t,0);}static addUrl(e,t){e.addFieldInt32(5,t,0);}static addTourId(e,t){e.addFieldInt32(6,t,0);}static addTargetBillingPeriod(e,t){e.addFieldInt8(7,t,0);}static addDescription(e,t){e.addFieldInt32(8,t,0);}static endContentUiPath(e){return e.endObject()}static createContentUiPath(e,t,r,i,s,a,o,p,v,l){return ei.startContentUiPath(e),ei.addName(e,t),ei.addActionType(e,r),ei.addPlanHandle(e,i),ei.addPromotionIdx(e,s),ei.addPlacementHandle(e,a),ei.addUrl(e,o),ei.addTourId(e,p),ei.addTargetBillingPeriod(e,v),ei.addDescription(e,l),ei.endContentUiPath(e)}},zd=class ti{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsEnforcementDefault(e,t){return (t||new ti).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsEnforcementDefault(e,t){return e.setPosition(e.position()+4),(t||new ti).__init(e.readInt32(e.position())+e.position(),e)}handle(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}entitlementHandle(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}softLimitPercent(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}hardLimitPercent(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}softLimitAction(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint32(this.bb_pos+e):0}hardLimitAction(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readUint32(this.bb_pos+e):0}gracePeriodHours(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}notificationChannels(e){let t=this.bb.__offset(this.bb_pos,18);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}notificationChannelsLength(){let e=this.bb.__offset(this.bb_pos,18);return e?this.bb.__vector_len(this.bb_pos+e):0}notificationChannelsArray(){let e=this.bb.__offset(this.bb_pos,18);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}isActive(){let e=this.bb.__offset(this.bb_pos,20);return e?!!this.bb.readInt8(this.bb_pos+e):false}static startEnforcementDefault(e){e.startObject(9);}static addHandle(e,t){e.addFieldInt32(0,t,0);}static addEntitlementHandle(e,t){e.addFieldInt32(1,t,0);}static addSoftLimitPercent(e,t){e.addFieldInt64(2,t,BigInt("0"));}static addHardLimitPercent(e,t){e.addFieldInt64(3,t,BigInt("0"));}static addSoftLimitAction(e,t){e.addFieldInt32(4,t,0);}static addHardLimitAction(e,t){e.addFieldInt32(5,t,0);}static addGracePeriodHours(e,t){e.addFieldInt64(6,t,BigInt("0"));}static addNotificationChannels(e,t){e.addFieldOffset(7,t,0);}static createNotificationChannelsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startNotificationChannelsVector(e,t){e.startVector(4,t,4);}static addIsActive(e,t){e.addFieldInt8(8,+t,0);}static endEnforcementDefault(e){return e.endObject()}static createEnforcementDefault(e,t,r,i,s,a,o,p,v,l){return ti.startEnforcementDefault(e),ti.addHandle(e,t),ti.addEntitlementHandle(e,r),ti.addSoftLimitPercent(e,i),ti.addHardLimitPercent(e,s),ti.addSoftLimitAction(e,a),ti.addHardLimitAction(e,o),ti.addGracePeriodHours(e,p),ti.addNotificationChannels(e,v),ti.addIsActive(e,l),ti.endEnforcementDefault(e)}},sc=class Vi{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsEntitlement(e,t){return (t||new Vi).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsEntitlement(e,t){return e.setPosition(e.position()+4),(t||new Vi).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}uniqueHandle(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}name(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}type(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readUint8(this.bb_pos+e):0}unit(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint32(this.bb_pos+e):0}tierHandles(e){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}tierHandlesLength(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.__vector_len(this.bb_pos+e):0}tierHandlesArray(){let e=this.bb.__offset(this.bb_pos,14);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}static startEntitlement(e){e.startObject(6);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addUniqueHandle(e,t){e.addFieldInt32(1,t,0);}static addName(e,t){e.addFieldInt32(2,t,0);}static addType(e,t){e.addFieldInt8(3,t,0);}static addUnit(e,t){e.addFieldInt32(4,t,0);}static addTierHandles(e,t){e.addFieldOffset(5,t,0);}static createTierHandlesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startTierHandlesVector(e,t){e.startVector(4,t,4);}static endEntitlement(e){return e.endObject()}static createEntitlement(e,t,r,i,s,a,o){return Vi.startEntitlement(e),Vi.addSourceId(e,t),Vi.addUniqueHandle(e,r),Vi.addName(e,i),Vi.addType(e,s),Vi.addUnit(e,a),Vi.addTierHandles(e,o),Vi.endEntitlement(e)}},Kd=class Oa{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsRuleTarget(e,t){return (t||new Oa).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsRuleTarget(e,t){return e.setPosition(e.position()+4),(t||new Oa).__init(e.readInt32(e.position())+e.position(),e)}kind(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint8(this.bb_pos+e):0}id(e){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__string(this.bb_pos+t,e):null}static startRuleTarget(e){e.startObject(2);}static addKind(e,t){e.addFieldInt8(0,t,0);}static addId(e,t){e.addFieldOffset(1,t,0);}static endRuleTarget(e){return e.endObject()}static createRuleTarget(e,t,r){return Oa.startRuleTarget(e),Oa.addKind(e,t),Oa.addId(e,r),Oa.endRuleTarget(e)}},vp=class Ui{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsCreditsFields(e,t){return (t||new Ui).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsCreditsFields(e,t){return e.setPosition(e.position()+4),(t||new Ui).__init(e.readInt32(e.position())+e.position(),e)}allowance(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}rollover(){let e=this.bb.__offset(this.bb_pos,6);return e?!!this.bb.readInt8(this.bb_pos+e):false}maxRollover(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}maxBalance(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readInt64(this.bb_pos+e):BigInt("-1")}initialGrant(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readInt64(this.bb_pos+e):BigInt("-1")}enforcement(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readUint8(this.bb_pos+e):0}static startCreditsFields(e){e.startObject(6);}static addAllowance(e,t){e.addFieldInt64(0,t,BigInt("0"));}static addRollover(e,t){e.addFieldInt8(1,+t,0);}static addMaxRollover(e,t){e.addFieldInt64(2,t,BigInt("0"));}static addMaxBalance(e,t){e.addFieldInt64(3,t,BigInt("-1"));}static addInitialGrant(e,t){e.addFieldInt64(4,t,BigInt("-1"));}static addEnforcement(e,t){e.addFieldInt8(5,t,0);}static endCreditsFields(e){return e.endObject()}static createCreditsFields(e,t,r,i,s,a,o){return Ui.startCreditsFields(e),Ui.addAllowance(e,t),Ui.addRollover(e,r),Ui.addMaxRollover(e,i),Ui.addMaxBalance(e,s),Ui.addInitialGrant(e,a),Ui.addEnforcement(e,o),Ui.endCreditsFields(e)}},yp=class Io{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsFeatureFields(e,t){return (t||new Io).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsFeatureFields(e,t){return e.setPosition(e.position()+4),(t||new Io).__init(e.readInt32(e.position())+e.position(),e)}enabled(){let e=this.bb.__offset(this.bb_pos,4);return e?!!this.bb.readInt8(this.bb_pos+e):false}static startFeatureFields(e){e.startObject(1);}static addEnabled(e,t){e.addFieldInt8(0,+t,0);}static endFeatureFields(e){return e.endObject()}static createFeatureFields(e,t){return Io.startFeatureFields(e),Io.addEnabled(e,t),Io.endFeatureFields(e)}},xp=class Aa{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsSeatsFields(e,t){return (t||new Aa).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsSeatsFields(e,t){return e.setPosition(e.position()+4),(t||new Aa).__init(e.readInt32(e.position())+e.position(),e)}includedCount(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}seatTypeSourceId(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}static startSeatsFields(e){e.startObject(2);}static addIncludedCount(e,t){e.addFieldInt64(0,t,BigInt("0"));}static addSeatTypeSourceId(e,t){e.addFieldInt32(1,t,0);}static endSeatsFields(e){return e.endObject()}static createSeatsFields(e,t,r){return Aa.startSeatsFields(e),Aa.addIncludedCount(e,t),Aa.addSeatTypeSourceId(e,r),Aa.endSeatsFields(e)}},Sp=class Po{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsTieredFields(e,t){return (t||new Po).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsTieredFields(e,t){return e.setPosition(e.position()+4),(t||new Po).__init(e.readInt32(e.position())+e.position(),e)}tierValue(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}static startTieredFields(e){e.startObject(1);}static addTierValue(e,t){e.addFieldInt32(0,t,0);}static endTieredFields(e){return e.endObject()}static createTieredFields(e,t){return Po.startTieredFields(e),Po.addTierValue(e,t),Po.endTieredFields(e)}},Ip=class ja{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsUsageLimitFields(e,t){return (t||new ja).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsUsageLimitFields(e,t){return e.setPosition(e.position()+4),(t||new ja).__init(e.readInt32(e.position())+e.position(),e)}limitValue(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}enforcement(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint8(this.bb_pos+e):0}static startUsageLimitFields(e){e.startObject(2);}static addLimitValue(e,t){e.addFieldInt64(0,t,BigInt("0"));}static addEnforcement(e,t){e.addFieldInt8(1,t,0);}static endUsageLimitFields(e){return e.endObject()}static createUsageLimitFields(e,t,r){return ja.startUsageLimitFields(e),ja.addLimitValue(e,t),ja.addEnforcement(e,r),ja.endUsageLimitFields(e)}},Gd=class di{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsEntitlementRule(e,t){return (t||new di).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsEntitlementRule(e,t){return e.setPosition(e.position()+4),(t||new di).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}entitlementIdx(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}planIdxs(e){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}planIdxsLength(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__vector_len(this.bb_pos+e):0}planIdxsArray(){let e=this.bb.__offset(this.bb_pos,8);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}segmentIdxs(e){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}segmentIdxsLength(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.__vector_len(this.bb_pos+e):0}segmentIdxsArray(){let e=this.bb.__offset(this.bb_pos,10);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}typeFieldsType(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint8(this.bb_pos+e):0}typeFields(e){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.__union(e,this.bb_pos+t):null}allocation(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.readUint8(this.bb_pos+e):0}targets(e,t){let r=this.bb.__offset(this.bb_pos,18);return r?(t||new Kd).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}targetsLength(){let e=this.bb.__offset(this.bb_pos,18);return e?this.bb.__vector_len(this.bb_pos+e):0}static startEntitlementRule(e){e.startObject(8);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addEntitlementIdx(e,t){e.addFieldInt32(1,t,0);}static addPlanIdxs(e,t){e.addFieldOffset(2,t,0);}static createPlanIdxsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startPlanIdxsVector(e,t){e.startVector(4,t,4);}static addSegmentIdxs(e,t){e.addFieldOffset(3,t,0);}static createSegmentIdxsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startSegmentIdxsVector(e,t){e.startVector(4,t,4);}static addTypeFieldsType(e,t){e.addFieldInt8(4,t,0);}static addTypeFields(e,t){e.addFieldOffset(5,t,0);}static addAllocation(e,t){e.addFieldInt8(6,t,0);}static addTargets(e,t){e.addFieldOffset(7,t,0);}static createTargetsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startTargetsVector(e,t){e.startVector(4,t,4);}static endEntitlementRule(e){return e.endObject()}static createEntitlementRule(e,t,r,i,s,a,o,p,v){return di.startEntitlementRule(e),di.addSourceId(e,t),di.addEntitlementIdx(e,r),di.addPlanIdxs(e,i),di.addSegmentIdxs(e,s),di.addTypeFieldsType(e,a),di.addTypeFields(e,o),di.addAllocation(e,p),di.addTargets(e,v),di.endEntitlementRule(e)}},Pp=class Qs{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsExtensionRule(e,t){return (t||new Qs).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsExtensionRule(e,t){return e.setPosition(e.position()+4),(t||new Qs).__init(e.readInt32(e.position())+e.position(),e)}kind(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}schemaVersion(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}config(e){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint8(this.bb.__vector(this.bb_pos+t)+e):0}configLength(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__vector_len(this.bb_pos+e):0}configArray(){let e=this.bb.__offset(this.bb_pos,8);return e?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}static startExtensionRule(e){e.startObject(3);}static addKind(e,t){e.addFieldInt32(0,t,0);}static addSchemaVersion(e,t){e.addFieldInt32(1,t,0);}static addConfig(e,t){e.addFieldOffset(2,t,0);}static createConfigVector(e,t){e.startVector(1,t.length,1);for(let r=t.length-1;r>=0;r--)e.addInt8(t[r]);return e.endVector()}static startConfigVector(e,t){e.startVector(1,t,1);}static endExtensionRule(e){return e.endObject()}static createExtensionRule(e,t,r,i){return Qs.startExtensionRule(e),Qs.addKind(e,t),Qs.addSchemaVersion(e,r),Qs.addConfig(e,i),Qs.endExtensionRule(e)}},$d=class ns{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsFreeTrialRule(e,t){return (t||new ns).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsFreeTrialRule(e,t){return e.setPosition(e.position()+4),(t||new ns).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}handle(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}planId(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}usageEntitlementHandle(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readUint32(this.bb_pos+e):0}usageLimitValue(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}static startFreeTrialRule(e){e.startObject(5);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addHandle(e,t){e.addFieldInt32(1,t,0);}static addPlanId(e,t){e.addFieldInt32(2,t,0);}static addUsageEntitlementHandle(e,t){e.addFieldInt32(3,t,0);}static addUsageLimitValue(e,t){e.addFieldInt64(4,t,BigInt("0"));}static endFreeTrialRule(e){return e.endObject()}static createFreeTrialRule(e,t,r,i,s,a){return ns.startFreeTrialRule(e),ns.addSourceId(e,t),ns.addHandle(e,r),ns.addPlanId(e,i),ns.addUsageEntitlementHandle(e,s),ns.addUsageLimitValue(e,a),ns.endFreeTrialRule(e)}},Zd=class br{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsHeader(e,t){return (t||new br).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsHeader(e,t){return e.setPosition(e.position()+4),(t||new br).__init(e.readInt32(e.position())+e.position(),e)}magic(e){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__string(this.bb_pos+t,e):null}schemaVersion(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}runtimeAbi(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}configVersion(e){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.__string(this.bb_pos+t,e):null}exportedAtMs(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}builtAtMs(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}sourceSha256(e){let t=this.bb.__offset(this.bb_pos,16);return t?this.bb.__string(this.bb_pos+t,e):null}tenantId(e){let t=this.bb.__offset(this.bb_pos,18);return t?this.bb.__string(this.bb_pos+t,e):null}changeSetId(e){let t=this.bb.__offset(this.bb_pos,20);return t?this.bb.__string(this.bb_pos+t,e):null}packageSchemaVersion(e){let t=this.bb.__offset(this.bb_pos,22);return t?this.bb.__string(this.bb_pos+t,e):null}environmentId(e){let t=this.bb.__offset(this.bb_pos,24);return t?this.bb.__string(this.bb_pos+t,e):null}playbookHandle(e){let t=this.bb.__offset(this.bb_pos,26);return t?this.bb.__string(this.bb_pos+t,e):null}static startHeader(e){e.startObject(12);}static addMagic(e,t){e.addFieldOffset(0,t,0);}static addSchemaVersion(e,t){e.addFieldInt32(1,t,0);}static addRuntimeAbi(e,t){e.addFieldInt32(2,t,0);}static addConfigVersion(e,t){e.addFieldOffset(3,t,0);}static addExportedAtMs(e,t){e.addFieldInt64(4,t,BigInt("0"));}static addBuiltAtMs(e,t){e.addFieldInt64(5,t,BigInt("0"));}static addSourceSha256(e,t){e.addFieldOffset(6,t,0);}static addTenantId(e,t){e.addFieldOffset(7,t,0);}static addChangeSetId(e,t){e.addFieldOffset(8,t,0);}static addPackageSchemaVersion(e,t){e.addFieldOffset(9,t,0);}static addEnvironmentId(e,t){e.addFieldOffset(10,t,0);}static addPlaybookHandle(e,t){e.addFieldOffset(11,t,0);}static endHeader(e){let t=e.endObject();return e.requiredField(t,4),e.requiredField(t,10),t}static createHeader(e,t,r,i,s,a,o,p,v,l,x,I,C){return br.startHeader(e),br.addMagic(e,t),br.addSchemaVersion(e,r),br.addRuntimeAbi(e,i),br.addConfigVersion(e,s),br.addExportedAtMs(e,a),br.addBuiltAtMs(e,o),br.addSourceSha256(e,p),br.addTenantId(e,v),br.addChangeSetId(e,l),br.addPackageSchemaVersion(e,x),br.addEnvironmentId(e,I),br.addPlaybookHandle(e,C),br.endHeader(e)}},Tp=class ea{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsMessageBlockChild(e,t){return (t||new ea).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsMessageBlockChild(e,t){return e.setPosition(e.position()+4),(t||new ea).__init(e.readInt32(e.position())+e.position(),e)}slot(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}blockIdx(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}blockSourceId(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}static startMessageBlockChild(e){e.startObject(3);}static addSlot(e,t){e.addFieldInt32(0,t,0);}static addBlockIdx(e,t){e.addFieldInt32(1,t,0);}static addBlockSourceId(e,t){e.addFieldInt32(2,t,0);}static endMessageBlockChild(e){return e.endObject()}static createMessageBlockChild(e,t,r,i){return ea.startMessageBlockChild(e),ea.addSlot(e,t),ea.addBlockIdx(e,r),ea.addBlockSourceId(e,i),ea.endMessageBlockChild(e)}},Yd=class{constructor(){this.bb=null,this.bb_pos=0;}__init(n,e){return this.bb_pos=n,this.bb=e,this}key(){return this.bb.readUint32(this.bb_pos)}value(){return this.bb.readUint32(this.bb_pos+4)}static sizeOf(){return 8}static createMessageBlockField(n,e,t){return n.prep(4,8),n.writeInt32(t),n.writeInt32(e),n.offset()}},Fa=class rs{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsMessageBlockContent(e,t){return (t||new rs).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsMessageBlockContent(e,t){return e.setPosition(e.position()+4),(t||new rs).__init(e.readInt32(e.position())+e.position(),e)}header(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}body(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}ctaLabel(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}secondaryCtaLabel(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readUint32(this.bb_pos+e):0}extra(e,t){let r=this.bb.__offset(this.bb_pos,12);return r?(t||new Yd).__init(this.bb.__vector(this.bb_pos+r)+e*8,this.bb):null}extraLength(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.__vector_len(this.bb_pos+e):0}static startMessageBlockContent(e){e.startObject(5);}static addHeader(e,t){e.addFieldInt32(0,t,0);}static addBody(e,t){e.addFieldInt32(1,t,0);}static addCtaLabel(e,t){e.addFieldInt32(2,t,0);}static addSecondaryCtaLabel(e,t){e.addFieldInt32(3,t,0);}static addExtra(e,t){e.addFieldOffset(4,t,0);}static startExtraVector(e,t){e.startVector(8,t,4);}static endMessageBlockContent(e){return e.endObject()}static createMessageBlockContent(e,t,r,i,s,a){return rs.startMessageBlockContent(e),rs.addHeader(e,t),rs.addBody(e,r),rs.addCtaLabel(e,i),rs.addSecondaryCtaLabel(e,s),rs.addExtra(e,a),rs.endMessageBlockContent(e)}},Wd=class cp{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsMessageBlockSegmentOverride(e,t){return (t||new cp).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsMessageBlockSegmentOverride(e,t){return e.setPosition(e.position()+4),(t||new cp).__init(e.readInt32(e.position())+e.position(),e)}segmentValue(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}content(e){let t=this.bb.__offset(this.bb_pos,6);return t?(e||new Fa).__init(this.bb.__indirect(this.bb_pos+t),this.bb):null}static startMessageBlockSegmentOverride(e){e.startObject(2);}static addSegmentValue(e,t){e.addFieldInt32(0,t,0);}static addContent(e,t){e.addFieldOffset(1,t,0);}static endMessageBlockSegmentOverride(e){return e.endObject()}},Xd=class dp{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsMessageBlock(e,t){return (t||new dp).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsMessageBlock(e,t){return e.setPosition(e.position()+4),(t||new dp).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}tenantId(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}name(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}surfaceTemplateIdx(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readUint32(this.bb_pos+e):0}defaultContent(e){let t=this.bb.__offset(this.bb_pos,12);return t?(e||new Fa).__init(this.bb.__indirect(this.bb_pos+t),this.bb):null}segmentOverrides(e,t){let r=this.bb.__offset(this.bb_pos,14);return r?(t||new Wd).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}segmentOverridesLength(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.__vector_len(this.bb_pos+e):0}childBlocks(e,t){let r=this.bb.__offset(this.bb_pos,16);return r?(t||new Tp).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}childBlocksLength(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.__vector_len(this.bb_pos+e):0}tokensUsed(e){let t=this.bb.__offset(this.bb_pos,18);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}tokensUsedLength(){let e=this.bb.__offset(this.bb_pos,18);return e?this.bb.__vector_len(this.bb_pos+e):0}tokensUsedArray(){let e=this.bb.__offset(this.bb_pos,18);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}status(){let e=this.bb.__offset(this.bb_pos,20);return e?this.bb.readUint8(this.bb_pos+e):0}createdAt(){let e=this.bb.__offset(this.bb_pos,22);return e?this.bb.readUint32(this.bb_pos+e):0}updatedAt(){let e=this.bb.__offset(this.bb_pos,24);return e?this.bb.readUint32(this.bb_pos+e):0}static startMessageBlock(e){e.startObject(11);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addTenantId(e,t){e.addFieldInt32(1,t,0);}static addName(e,t){e.addFieldInt32(2,t,0);}static addSurfaceTemplateIdx(e,t){e.addFieldInt32(3,t,0);}static addDefaultContent(e,t){e.addFieldOffset(4,t,0);}static addSegmentOverrides(e,t){e.addFieldOffset(5,t,0);}static createSegmentOverridesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startSegmentOverridesVector(e,t){e.startVector(4,t,4);}static addChildBlocks(e,t){e.addFieldOffset(6,t,0);}static createChildBlocksVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startChildBlocksVector(e,t){e.startVector(4,t,4);}static addTokensUsed(e,t){e.addFieldOffset(7,t,0);}static createTokensUsedVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startTokensUsedVector(e,t){e.startVector(4,t,4);}static addStatus(e,t){e.addFieldInt8(8,t,0);}static addCreatedAt(e,t){e.addFieldInt32(9,t,0);}static addUpdatedAt(e,t){e.addFieldInt32(10,t,0);}static endMessageBlock(e){return e.endObject()}},Jd=class is{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsMeterBinding(e,t){return (t||new is).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsMeterBinding(e,t){return e.setPosition(e.position()+4),(t||new is).__init(e.readInt32(e.position())+e.position(),e)}handle(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}entitlementHandle(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}meterHandle(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}limit(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}resetPeriod(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint32(this.bb_pos+e):0}static startMeterBinding(e){e.startObject(5);}static addHandle(e,t){e.addFieldInt32(0,t,0);}static addEntitlementHandle(e,t){e.addFieldInt32(1,t,0);}static addMeterHandle(e,t){e.addFieldInt32(2,t,0);}static addLimit(e,t){e.addFieldInt64(3,t,BigInt("0"));}static addResetPeriod(e,t){e.addFieldInt32(4,t,0);}static endMeterBinding(e){return e.endObject()}static createMeterBinding(e,t,r,i,s,a){return is.startMeterBinding(e),is.addHandle(e,t),is.addEntitlementHandle(e,r),is.addMeterHandle(e,i),is.addLimit(e,s),is.addResetPeriod(e,a),is.endMeterBinding(e)}},Cp=class{constructor(){this.bb=null,this.bb_pos=0;}__init(n,e){return this.bb_pos=n,this.bb=e,this}key(){return this.bb.readUint32(this.bb_pos)}value(){return this.bb.readUint32(this.bb_pos+4)}static sizeOf(){return 8}static createTokenValueEntry(n,e,t){return n.prep(4,8),n.writeInt32(t),n.writeInt32(e),n.offset()}},kp=class ui{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsPersonalizationToken(e,t){return (t||new ui).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsPersonalizationToken(e,t){return e.setPosition(e.position()+4),(t||new ui).__init(e.readInt32(e.position())+e.position(),e)}token(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}label(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}description(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}category(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readUint8(this.bb_pos+e):0}dataSource(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint32(this.bb_pos+e):0}exampleValue(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readUint32(this.bb_pos+e):0}valueMap(e,t){let r=this.bb.__offset(this.bb_pos,16);return r?(t||new Cp).__init(this.bb.__vector(this.bb_pos+r)+e*8,this.bb):null}valueMapLength(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.__vector_len(this.bb_pos+e):0}format(){let e=this.bb.__offset(this.bb_pos,18);return e?this.bb.readUint8(this.bb_pos+e):0}static startPersonalizationToken(e){e.startObject(8);}static addToken(e,t){e.addFieldInt32(0,t,0);}static addLabel(e,t){e.addFieldInt32(1,t,0);}static addDescription(e,t){e.addFieldInt32(2,t,0);}static addCategory(e,t){e.addFieldInt8(3,t,0);}static addDataSource(e,t){e.addFieldInt32(4,t,0);}static addExampleValue(e,t){e.addFieldInt32(5,t,0);}static addValueMap(e,t){e.addFieldOffset(6,t,0);}static startValueMapVector(e,t){e.startVector(8,t,4);}static addFormat(e,t){e.addFieldInt8(7,t,0);}static endPersonalizationToken(e){return e.endObject()}static createPersonalizationToken(e,t,r,i,s,a,o,p,v){return ui.startPersonalizationToken(e),ui.addToken(e,t),ui.addLabel(e,r),ui.addDescription(e,i),ui.addCategory(e,s),ui.addDataSource(e,a),ui.addExampleValue(e,o),ui.addValueMap(e,p),ui.addFormat(e,v),ui.endPersonalizationToken(e)}},Qd=class{constructor(){this.bb=null,this.bb_pos=0;}__init(n,e){return this.bb_pos=n,this.bb=e,this}type(){return this.bb.readUint8(this.bb_pos)}trialType(){return this.bb.readUint8(this.bb_pos+1)}slotIdx(){return this.bb.readUint32(this.bb_pos+4)}entitlementIdx(){return this.bb.readUint32(this.bb_pos+8)}tierThreshold(){return this.bb.readUint32(this.bb_pos+12)}qualifier(){return this.bb.readUint32(this.bb_pos+16)}thresholdPercent(){return this.bb.readFloat32(this.bb_pos+20)}progressPercent(){return this.bb.readFloat32(this.bb_pos+24)}daysBeforeEnd(){return this.bb.readInt32(this.bb_pos+28)}static sizeOf(){return 32}static createPlacementTrigger(n,e,t,r,i,s,a,o,p,v){return n.prep(4,32),n.writeInt32(v),n.writeFloat32(p),n.writeFloat32(o),n.writeInt32(a),n.writeInt32(s),n.writeInt32(i),n.writeInt32(r),n.pad(2),n.writeInt8(t),n.writeInt8(e),n.offset()}},dc=class{constructor(){this.bb=null,this.bb_pos=0;}__init(n,e){return this.bb_pos=n,this.bb=e,this}hasMaxPerPeriod(){return !!this.bb.readInt8(this.bb_pos)}maxPerPeriod(){return this.bb.readUint8(this.bb_pos+1)}maxPerPeriodCount(){return this.bb.readUint32(this.bb_pos+4)}cooldownDays(){return this.bb.readInt32(this.bb_pos+8)}static sizeOf(){return 12}static createPayloadCaps(n,e,t,r,i){return n.prep(4,12),n.writeInt32(i),n.writeInt32(r),n.pad(2),n.writeInt8(t),n.writeInt8(+!!e),n.offset()}},eu=class Es{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsCtaConfig(e,t){return (t||new Es).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsCtaConfig(e,t){return e.setPosition(e.position()+4),(t||new Es).__init(e.readInt32(e.position())+e.position(),e)}label(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}path(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}configKeys(e){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}configKeysLength(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__vector_len(this.bb_pos+e):0}configKeysArray(){let e=this.bb.__offset(this.bb_pos,8);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}configValues(e){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}configValuesLength(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.__vector_len(this.bb_pos+e):0}configValuesArray(){let e=this.bb.__offset(this.bb_pos,10);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}static startCtaConfig(e){e.startObject(4);}static addLabel(e,t){e.addFieldInt32(0,t,0);}static addPath(e,t){e.addFieldInt32(1,t,0);}static addConfigKeys(e,t){e.addFieldOffset(2,t,0);}static createConfigKeysVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startConfigKeysVector(e,t){e.startVector(4,t,4);}static addConfigValues(e,t){e.addFieldOffset(3,t,0);}static createConfigValuesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startConfigValuesVector(e,t){e.startVector(4,t,4);}static endCtaConfig(e){return e.endObject()}static createCtaConfig(e,t,r,i,s){return Es.startCtaConfig(e),Es.addLabel(e,t),Es.addPath(e,r),Es.addConfigKeys(e,i),Es.addConfigValues(e,s),Es.endCtaConfig(e)}},Rp=class{constructor(){this.bb=null,this.bb_pos=0;}__init(n,e){return this.bb_pos=n,this.bb=e,this}key(){return this.bb.readUint32(this.bb_pos)}value(){return this.bb.readUint32(this.bb_pos+4)}static sizeOf(){return 8}static createSurfaceFieldEntry(n,e,t){return n.prep(4,8),n.writeInt32(t),n.writeInt32(e),n.offset()}},Eo=class ws{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsPayloadSurface(e,t){return (t||new ws).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsPayloadSurface(e,t){return e.setPosition(e.position()+4),(t||new ws).__init(e.readInt32(e.position())+e.position(),e)}templateIdx(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}templateSourceId(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}fields(e,t){let r=this.bb.__offset(this.bb_pos,8);return r?(t||new Rp).__init(this.bb.__vector(this.bb_pos+r)+e*8,this.bb):null}fieldsLength(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__vector_len(this.bb_pos+e):0}ctas(e,t){let r=this.bb.__offset(this.bb_pos,10);return r?(t||new eu).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}ctasLength(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.__vector_len(this.bb_pos+e):0}static startPayloadSurface(e){e.startObject(4);}static addTemplateIdx(e,t){e.addFieldInt32(0,t,0);}static addTemplateSourceId(e,t){e.addFieldInt32(1,t,0);}static addFields(e,t){e.addFieldOffset(2,t,0);}static startFieldsVector(e,t){e.startVector(8,t,4);}static addCtas(e,t){e.addFieldOffset(3,t,0);}static createCtasVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startCtasVector(e,t){e.startVector(4,t,4);}static endPayloadSurface(e){return e.endObject()}static createPayloadSurface(e,t,r,i,s){return ws.startPayloadSurface(e),ws.addTemplateIdx(e,t),ws.addTemplateSourceId(e,r),ws.addFields(e,i),ws.addCtas(e,s),ws.endPayloadSurface(e)}},tu=class{constructor(){this.bb=null,this.bb_pos=0;}__init(n,e){return this.bb_pos=n,this.bb=e,this}kind(){return this.bb.readUint8(this.bb_pos)}segmentIdx(){return this.bb.readUint32(this.bb_pos+4)}planIdx(){return this.bb.readUint32(this.bb_pos+8)}literal(){return this.bb.readUint32(this.bb_pos+12)}static sizeOf(){return 16}static createSegmentChip(n,e,t,r,i){return n.prep(4,16),n.writeInt32(i),n.writeInt32(r),n.writeInt32(t),n.pad(3),n.writeInt8(e),n.offset()}},uc=class ta{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsPayloadTarget(e,t){return (t||new ta).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsPayloadTarget(e,t){return e.setPosition(e.position()+4),(t||new ta).__init(e.readInt32(e.position())+e.position(),e)}planIdxs(e){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}planIdxsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}planIdxsArray(){let e=this.bb.__offset(this.bb_pos,4);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}segmentChips(e,t){let r=this.bb.__offset(this.bb_pos,6);return r?(t||new tu).__init(this.bb.__vector(this.bb_pos+r)+e*16,this.bb):null}segmentChipsLength(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__vector_len(this.bb_pos+e):0}billingCadences(e){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}billingCadencesLength(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__vector_len(this.bb_pos+e):0}billingCadencesArray(){let e=this.bb.__offset(this.bb_pos,8);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}static startPayloadTarget(e){e.startObject(3);}static addPlanIdxs(e,t){e.addFieldOffset(0,t,0);}static createPlanIdxsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startPlanIdxsVector(e,t){e.startVector(4,t,4);}static addSegmentChips(e,t){e.addFieldOffset(1,t,0);}static startSegmentChipsVector(e,t){e.startVector(16,t,4);}static addBillingCadences(e,t){e.addFieldOffset(2,t,0);}static createBillingCadencesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startBillingCadencesVector(e,t){e.startVector(4,t,4);}static endPayloadTarget(e){return e.endObject()}static createPayloadTarget(e,t,r,i){return ta.startPayloadTarget(e),ta.addPlanIdxs(e,t),ta.addSegmentChips(e,r),ta.addBillingCadences(e,i),ta.endPayloadTarget(e)}},nu=class up{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsStudioPayload(e,t){return (t||new up).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsStudioPayload(e,t){return e.setPosition(e.position()+4),(t||new up).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}target(e){let t=this.bb.__offset(this.bb_pos,6);return t?(e||new uc).__init(this.bb.__indirect(this.bb_pos+t),this.bb):null}surfaces(e,t){let r=this.bb.__offset(this.bb_pos,8);return r?(t||new Eo).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}surfacesLength(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__vector_len(this.bb_pos+e):0}caps(e){let t=this.bb.__offset(this.bb_pos,10);return t?(e||new dc).__init(this.bb_pos+t,this.bb):null}createdAt(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint32(this.bb_pos+e):0}recommendationStrategy(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readUint8(this.bb_pos+e):0}recommendationPlanOverride(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.readUint32(this.bb_pos+e):0}surfaceSlotIds(e){let t=this.bb.__offset(this.bb_pos,18);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}surfaceSlotIdsLength(){let e=this.bb.__offset(this.bb_pos,18);return e?this.bb.__vector_len(this.bb_pos+e):0}surfaceSlotIdsArray(){let e=this.bb.__offset(this.bb_pos,18);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}remindLaterMinutes(){let e=this.bb.__offset(this.bb_pos,20);return e?this.bb.readInt32(this.bb_pos+e):-1}static startStudioPayload(e){e.startObject(9);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addTarget(e,t){e.addFieldOffset(1,t,0);}static addSurfaces(e,t){e.addFieldOffset(2,t,0);}static createSurfacesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startSurfacesVector(e,t){e.startVector(4,t,4);}static addCaps(e,t){e.addFieldStruct(3,t,0);}static addCreatedAt(e,t){e.addFieldInt32(4,t,0);}static addRecommendationStrategy(e,t){e.addFieldInt8(5,t,0);}static addRecommendationPlanOverride(e,t){e.addFieldInt32(6,t,0);}static addSurfaceSlotIds(e,t){e.addFieldOffset(7,t,0);}static createSurfaceSlotIdsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startSurfaceSlotIdsVector(e,t){e.startVector(4,t,4);}static addRemindLaterMinutes(e,t){e.addFieldInt32(8,t,-1);}static endStudioPayload(e){return e.endObject()}},Co=class mp{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsPlacement(e,t){return (t||new mp).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsPlacement(e,t){return e.setPosition(e.position()+4),(t||new mp).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}name(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}category(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint8(this.bb_pos+e):0}trigger(e){let t=this.bb.__offset(this.bb_pos,10);return t?(e||new Qd).__init(this.bb_pos+t,this.bb):null}payloads(e,t){let r=this.bb.__offset(this.bb_pos,12);return r?(t||new nu).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}payloadsLength(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.__vector_len(this.bb_pos+e):0}order(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readUint32(this.bb_pos+e):0}static startPlacement(e){e.startObject(6);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addName(e,t){e.addFieldInt32(1,t,0);}static addCategory(e,t){e.addFieldInt8(2,t,0);}static addTrigger(e,t){e.addFieldStruct(3,t,0);}static addPayloads(e,t){e.addFieldOffset(4,t,0);}static createPayloadsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startPayloadsVector(e,t){e.startVector(4,t,4);}static addOrder(e,t){e.addFieldInt32(5,t,0);}static endPlacement(e){return e.endObject()}},ru=class{constructor(){this.bb=null,this.bb_pos=0;}__init(n,e){return this.bb_pos=n,this.bb=e,this}messageBlockIdx(){return this.bb.readUint32(this.bb_pos)}uiPathIdx(){return this.bb.readUint32(this.bb_pos+4)}promotionIdx(){return this.bb.readUint32(this.bb_pos+8)}contentPayloadSourceId(){return this.bb.readUint32(this.bb_pos+12)}static sizeOf(){return 16}static createContentLink(n,e,t,r,i){return n.prep(4,16),n.writeInt32(i),n.writeInt32(r),n.writeInt32(t),n.writeInt32(e),n.offset()}},iu=class pp{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsPlacementPayload(e,t){return (t||new pp).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsPlacementPayload(e,t){return e.setPosition(e.position()+4),(t||new pp).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}placementIdx(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}placementSourceId(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}target(e){let t=this.bb.__offset(this.bb_pos,10);return t?(e||new uc).__init(this.bb.__indirect(this.bb_pos+t),this.bb):null}caps(e){let t=this.bb.__offset(this.bb_pos,12);return t?(e||new dc).__init(this.bb_pos+t,this.bb):null}createdAt(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readUint32(this.bb_pos+e):0}updatedAt(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.readUint32(this.bb_pos+e):0}sourceMode(){let e=this.bb.__offset(this.bb_pos,18);return e?this.bb.readUint8(this.bb_pos+e):0}surfaces(e,t){let r=this.bb.__offset(this.bb_pos,20);return r?(t||new Eo).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}surfacesLength(){let e=this.bb.__offset(this.bb_pos,20);return e?this.bb.__vector_len(this.bb_pos+e):0}contentLink(e){let t=this.bb.__offset(this.bb_pos,22);return t?(e||new ru).__init(this.bb_pos+t,this.bb):null}surfaceSlotIds(e){let t=this.bb.__offset(this.bb_pos,24);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}surfaceSlotIdsLength(){let e=this.bb.__offset(this.bb_pos,24);return e?this.bb.__vector_len(this.bb_pos+e):0}surfaceSlotIdsArray(){let e=this.bb.__offset(this.bb_pos,24);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}remindLaterMinutes(){let e=this.bb.__offset(this.bb_pos,26);return e?this.bb.readInt32(this.bb_pos+e):-1}static startPlacementPayload(e){e.startObject(12);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addPlacementIdx(e,t){e.addFieldInt32(1,t,0);}static addPlacementSourceId(e,t){e.addFieldInt32(2,t,0);}static addTarget(e,t){e.addFieldOffset(3,t,0);}static addCaps(e,t){e.addFieldStruct(4,t,0);}static addCreatedAt(e,t){e.addFieldInt32(5,t,0);}static addUpdatedAt(e,t){e.addFieldInt32(6,t,0);}static addSourceMode(e,t){e.addFieldInt8(7,t,0);}static addSurfaces(e,t){e.addFieldOffset(8,t,0);}static createSurfacesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startSurfacesVector(e,t){e.startVector(4,t,4);}static addContentLink(e,t){e.addFieldStruct(9,t,0);}static addSurfaceSlotIds(e,t){e.addFieldOffset(10,t,0);}static createSurfaceSlotIdsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startSurfaceSlotIdsVector(e,t){e.startVector(4,t,4);}static addRemindLaterMinutes(e,t){e.addFieldInt32(11,t,-1);}static endPlacementPayload(e){return e.endObject()}},su=class mi{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsPlacementSetting(e,t){return (t||new mi).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsPlacementSetting(e,t){return e.setPosition(e.position()+4),(t||new mi).__init(e.readInt32(e.position())+e.position(),e)}handle(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}globalFrequencyCap(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}globalFrequencyCapPeriod(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}suppressForPaid(){let e=this.bb.__offset(this.bb_pos,10);return e?!!this.bb.readInt8(this.bb_pos+e):false}suppressForTrial(){let e=this.bb.__offset(this.bb_pos,12);return e?!!this.bb.readInt8(this.bb_pos+e):false}defaultDismissCooldownHours(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}allowStacking(){let e=this.bb.__offset(this.bb_pos,16);return e?!!this.bb.readInt8(this.bb_pos+e):false}priorityCollisionStrategy(){let e=this.bb.__offset(this.bb_pos,18);return e?this.bb.readUint32(this.bb_pos+e):0}static startPlacementSetting(e){e.startObject(8);}static addHandle(e,t){e.addFieldInt32(0,t,0);}static addGlobalFrequencyCap(e,t){e.addFieldInt32(1,t,0);}static addGlobalFrequencyCapPeriod(e,t){e.addFieldInt32(2,t,0);}static addSuppressForPaid(e,t){e.addFieldInt8(3,+t,0);}static addSuppressForTrial(e,t){e.addFieldInt8(4,+t,0);}static addDefaultDismissCooldownHours(e,t){e.addFieldInt64(5,t,BigInt("0"));}static addAllowStacking(e,t){e.addFieldInt8(6,+t,0);}static addPriorityCollisionStrategy(e,t){e.addFieldInt32(7,t,0);}static endPlacementSetting(e){return e.endObject()}static createPlacementSetting(e,t,r,i,s,a,o,p,v){return mi.startPlacementSetting(e),mi.addHandle(e,t),mi.addGlobalFrequencyCap(e,r),mi.addGlobalFrequencyCapPeriod(e,i),mi.addSuppressForPaid(e,s),mi.addSuppressForTrial(e,a),mi.addDefaultDismissCooldownHours(e,o),mi.addAllowStacking(e,p),mi.addPriorityCollisionStrategy(e,v),mi.endPlacementSetting(e)}},ac=class Bi{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsPlacementSlot(e,t){return (t||new Bi).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsPlacementSlot(e,t){return e.setPosition(e.position()+4),(t||new Bi).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}label(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}description(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}surfaceType(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readUint32(this.bb_pos+e):0}placementHandle(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint32(this.bb_pos+e):0}template(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readUint32(this.bb_pos+e):0}static startPlacementSlot(e){e.startObject(6);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addLabel(e,t){e.addFieldInt32(1,t,0);}static addDescription(e,t){e.addFieldInt32(2,t,0);}static addSurfaceType(e,t){e.addFieldInt32(3,t,0);}static addPlacementHandle(e,t){e.addFieldInt32(4,t,0);}static addTemplate(e,t){e.addFieldInt32(5,t,0);}static endPlacementSlot(e){return e.endObject()}static createPlacementSlot(e,t,r,i,s,a,o){return Bi.startPlacementSlot(e),Bi.addSourceId(e,t),Bi.addLabel(e,r),Bi.addDescription(e,i),Bi.addSurfaceType(e,s),Bi.addPlacementHandle(e,a),Bi.addTemplate(e,o),Bi.endPlacementSlot(e)}},ko=class ss{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsPlan(e,t){return (t||new ss).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsPlan(e,t){return e.setPosition(e.position()+4),(t||new ss).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}uniqueHandle(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}name(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}tierPosition(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readUint32(this.bb_pos+e):0}sortOrder(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint32(this.bb_pos+e):0}static startPlan(e){e.startObject(5);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addUniqueHandle(e,t){e.addFieldInt32(1,t,0);}static addName(e,t){e.addFieldInt32(2,t,0);}static addTierPosition(e,t){e.addFieldInt32(3,t,0);}static addSortOrder(e,t){e.addFieldInt32(4,t,0);}static endPlan(e){return e.endObject()}static createPlan(e,t,r,i,s,a){return ss.startPlan(e),ss.addSourceId(e,t),ss.addUniqueHandle(e,r),ss.addName(e,i),ss.addTierPosition(e,s),ss.addSortOrder(e,a),ss.endPlan(e)}},ia=class{constructor(){this.bb=null,this.bb_pos=0;}__init(n,e){return this.bb_pos=n,this.bb=e,this}start(){return this.bb.readUint32(this.bb_pos)}count(){return this.bb.readUint32(this.bb_pos+4)}static sizeOf(){return 8}static createRange(n,e,t){return n.prep(4,8),n.writeInt32(t),n.writeInt32(e),n.offset()}},au=class pi{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsReverseTrialRule(e,t){return (t||new pi).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsReverseTrialRule(e,t){return e.setPosition(e.position()+4),(t||new pi).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}handle(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}premiumPlanId(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}fallbackPlanId(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readUint32(this.bb_pos+e):0}entitlementsDuringTrial(e){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}entitlementsDuringTrialLength(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.__vector_len(this.bb_pos+e):0}entitlementsDuringTrialArray(){let e=this.bb.__offset(this.bb_pos,12);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}isActive(){let e=this.bb.__offset(this.bb_pos,14);return e?!!this.bb.readInt8(this.bb_pos+e):false}usageEntitlementHandle(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.readUint32(this.bb_pos+e):0}usageLimitValue(){let e=this.bb.__offset(this.bb_pos,18);return e?this.bb.readInt64(this.bb_pos+e):BigInt("0")}static startReverseTrialRule(e){e.startObject(8);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addHandle(e,t){e.addFieldInt32(1,t,0);}static addPremiumPlanId(e,t){e.addFieldInt32(2,t,0);}static addFallbackPlanId(e,t){e.addFieldInt32(3,t,0);}static addEntitlementsDuringTrial(e,t){e.addFieldOffset(4,t,0);}static createEntitlementsDuringTrialVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startEntitlementsDuringTrialVector(e,t){e.startVector(4,t,4);}static addIsActive(e,t){e.addFieldInt8(5,+t,0);}static addUsageEntitlementHandle(e,t){e.addFieldInt32(6,t,0);}static addUsageLimitValue(e,t){e.addFieldInt64(7,t,BigInt("0"));}static endReverseTrialRule(e){return e.endObject()}static createReverseTrialRule(e,t,r,i,s,a,o,p,v){return pi.startReverseTrialRule(e),pi.addSourceId(e,t),pi.addHandle(e,r),pi.addPremiumPlanId(e,i),pi.addFallbackPlanId(e,s),pi.addEntitlementsDuringTrial(e,a),pi.addIsActive(e,o),pi.addUsageEntitlementHandle(e,p),pi.addUsageLimitValue(e,v),pi.endReverseTrialRule(e)}},ou=class Os{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsSeatType(e,t){return (t||new Os).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsSeatType(e,t){return e.setPosition(e.position()+4),(t||new Os).__init(e.readInt32(e.position())+e.position(),e)}handle(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}name(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}isDefault(){let e=this.bb.__offset(this.bb_pos,8);return e?!!this.bb.readInt8(this.bb_pos+e):false}entitlementHandles(e){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}entitlementHandlesLength(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.__vector_len(this.bb_pos+e):0}entitlementHandlesArray(){let e=this.bb.__offset(this.bb_pos,10);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}static startSeatType(e){e.startObject(4);}static addHandle(e,t){e.addFieldInt32(0,t,0);}static addName(e,t){e.addFieldInt32(1,t,0);}static addIsDefault(e,t){e.addFieldInt8(2,+t,0);}static addEntitlementHandles(e,t){e.addFieldOffset(3,t,0);}static createEntitlementHandlesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startEntitlementHandlesVector(e,t){e.startVector(4,t,4);}static endSeatType(e){return e.endObject()}static createSeatType(e,t,r,i,s){return Os.startSeatType(e),Os.addHandle(e,t),Os.addName(e,r),Os.addIsDefault(e,i),Os.addEntitlementHandles(e,s),Os.endSeatType(e)}},lu=class{constructor(){this.bb=null,this.bb_pos=0;}__init(n,e){return this.bb_pos=n,this.bb=e,this}fieldIdx(){return this.bb.readUint32(this.bb_pos)}op(){return this.bb.readUint8(this.bb_pos+4)}value(){return this.bb.readUint32(this.bb_pos+8)}static sizeOf(){return 12}static createSegmentPredicate(n,e,t,r){return n.prep(4,12),n.writeInt32(r),n.pad(3),n.writeInt8(t),n.writeInt32(e),n.offset()}},oc=class yi{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsSegment(e,t){return (t||new yi).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsSegment(e,t){return e.setPosition(e.position()+4),(t||new yi).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}name(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}slug(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}combinator(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readUint8(this.bb_pos+e):0}predicates(e,t){let r=this.bb.__offset(this.bb_pos,12);return r?(t||new lu).__init(this.bb.__vector(this.bb_pos+r)+e*12,this.bb):null}predicatesLength(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.__vector_len(this.bb_pos+e):0}dimensionId(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readUint32(this.bb_pos+e):0}experimentId(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.readUint32(this.bb_pos+e):0}static startSegment(e){e.startObject(7);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addName(e,t){e.addFieldInt32(1,t,0);}static addSlug(e,t){e.addFieldInt32(2,t,0);}static addCombinator(e,t){e.addFieldInt8(3,t,0);}static addPredicates(e,t){e.addFieldOffset(4,t,0);}static startPredicatesVector(e,t){e.startVector(12,t,4);}static addDimensionId(e,t){e.addFieldInt32(5,t,0);}static addExperimentId(e,t){e.addFieldInt32(6,t,0);}static endSegment(e){return e.endObject()}static createSegment(e,t,r,i,s,a,o,p){return yi.startSegment(e),yi.addSourceId(e,t),yi.addName(e,r),yi.addSlug(e,i),yi.addCombinator(e,s),yi.addPredicates(e,a),yi.addDimensionId(e,o),yi.addExperimentId(e,p),yi.endSegment(e)}},cu=class as{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsSegmentDimension(e,t){return (t||new as).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsSegmentDimension(e,t){return e.setPosition(e.position()+4),(t||new as).__init(e.readInt32(e.position())+e.position(),e)}handle(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}name(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}category(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}visibilityToggle(){let e=this.bb.__offset(this.bb_pos,10);return e?!!this.bb.readInt8(this.bb_pos+e):false}sourceType(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint32(this.bb_pos+e):0}static startSegmentDimension(e){e.startObject(5);}static addHandle(e,t){e.addFieldInt32(0,t,0);}static addName(e,t){e.addFieldInt32(1,t,0);}static addCategory(e,t){e.addFieldInt32(2,t,0);}static addVisibilityToggle(e,t){e.addFieldInt8(3,+t,0);}static addSourceType(e,t){e.addFieldInt32(4,t,0);}static endSegmentDimension(e){return e.endObject()}static createSegmentDimension(e,t,r,i,s,a){return as.startSegmentDimension(e),as.addHandle(e,t),as.addName(e,r),as.addCategory(e,i),as.addVisibilityToggle(e,s),as.addSourceType(e,a),as.endSegmentDimension(e)}},Ep=class na{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsSlotConfig(e,t){return (t||new na).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsSlotConfig(e,t){return e.setPosition(e.position()+4),(t||new na).__init(e.readInt32(e.position())+e.position(),e)}slotIdx(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}active(){let e=this.bb.__offset(this.bb_pos,6);return e?!!this.bb.readInt8(this.bb_pos+e):false}triggers(e){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}triggersLength(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__vector_len(this.bb_pos+e):0}triggersArray(){let e=this.bb.__offset(this.bb_pos,8);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}static startSlotConfig(e){e.startObject(3);}static addSlotIdx(e,t){e.addFieldInt32(0,t,0);}static addActive(e,t){e.addFieldInt8(1,+t,0);}static addTriggers(e,t){e.addFieldOffset(2,t,0);}static createTriggersVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startTriggersVector(e,t){e.startVector(4,t,4);}static endSlotConfig(e){return e.endObject()}static createSlotConfig(e,t,r,i){return na.startSlotConfig(e),na.addSlotIdx(e,t),na.addActive(e,r),na.addTriggers(e,i),na.endSlotConfig(e)}},du=class{constructor(){this.bb=null,this.bb_pos=0;}__init(n,e){return this.bb_pos=n,this.bb=e,this}name(){return this.bb.readUint32(this.bb_pos)}type(){return this.bb.readUint32(this.bb_pos+4)}required(){return !!this.bb.readInt8(this.bb_pos+8)}static sizeOf(){return 12}static createSurfaceTemplateField(n,e,t,r){return n.prep(4,12),n.pad(3),n.writeInt8(+!!r),n.writeInt32(t),n.writeInt32(e),n.offset()}},lc=class ra{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsSurfaceTemplate(e,t){return (t||new ra).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsSurfaceTemplate(e,t){return e.setPosition(e.position()+4),(t||new ra).__init(e.readInt32(e.position())+e.position(),e)}sourceId(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb_pos+e):0}surfaceType(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint32(this.bb_pos+e):0}fields(e,t){let r=this.bb.__offset(this.bb_pos,8);return r?(t||new du).__init(this.bb.__vector(this.bb_pos+r)+e*12,this.bb):null}fieldsLength(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__vector_len(this.bb_pos+e):0}static startSurfaceTemplate(e){e.startObject(3);}static addSourceId(e,t){e.addFieldInt32(0,t,0);}static addSurfaceType(e,t){e.addFieldInt32(1,t,0);}static addFields(e,t){e.addFieldOffset(2,t,0);}static startFieldsVector(e,t){e.startVector(12,t,4);}static endSurfaceTemplate(e){return e.endObject()}static createSurfaceTemplate(e,t,r,i){return ra.startSurfaceTemplate(e),ra.addSourceId(e,t),ra.addSurfaceType(e,r),ra.addFields(e,i),ra.endSurfaceTemplate(e)}},fp=class Kt{constructor(){this.bb=null,this.bb_pos=0;}__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsRuleBundle(e,t){return (t||new Kt).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsRuleBundle(e,t){return e.setPosition(e.position()+4),(t||new Kt).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("RVTB")}header(e){let t=this.bb.__offset(this.bb_pos,4);return t?(e||new Zd).__init(this.bb.__indirect(this.bb_pos+t),this.bb):null}stringPool(e,t){let r=this.bb.__offset(this.bb_pos,6);return r?this.bb.__string(this.bb.__vector(this.bb_pos+r)+e*4,t):null}stringPoolLength(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__vector_len(this.bb_pos+e):0}predicateFields(e,t){let r=this.bb.__offset(this.bb_pos,8);return r?this.bb.__string(this.bb.__vector(this.bb_pos+r)+e*4,t):null}predicateFieldsLength(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__vector_len(this.bb_pos+e):0}plans(e,t){let r=this.bb.__offset(this.bb_pos,10);return r?(t||new ko).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}plansLength(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.__vector_len(this.bb_pos+e):0}entitlements(e,t){let r=this.bb.__offset(this.bb_pos,12);return r?(t||new sc).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}entitlementsLength(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.__vector_len(this.bb_pos+e):0}entitlementRules(e,t){let r=this.bb.__offset(this.bb_pos,14);return r?(t||new Gd).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}entitlementRulesLength(){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.__vector_len(this.bb_pos+e):0}segments(e,t){let r=this.bb.__offset(this.bb_pos,16);return r?(t||new oc).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}segmentsLength(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.__vector_len(this.bb_pos+e):0}placementSlots(e,t){let r=this.bb.__offset(this.bb_pos,18);return r?(t||new ac).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}placementSlotsLength(){let e=this.bb.__offset(this.bb_pos,18);return e?this.bb.__vector_len(this.bb_pos+e):0}slotConfigs(e,t){let r=this.bb.__offset(this.bb_pos,20);return r?(t||new Ep).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}slotConfigsLength(){let e=this.bb.__offset(this.bb_pos,20);return e?this.bb.__vector_len(this.bb_pos+e):0}surfaceTemplates(e,t){let r=this.bb.__offset(this.bb_pos,22);return r?(t||new lc).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}surfaceTemplatesLength(){let e=this.bb.__offset(this.bb_pos,22);return e?this.bb.__vector_len(this.bb_pos+e):0}placements(e,t){let r=this.bb.__offset(this.bb_pos,24);return r?(t||new Co).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}placementsLength(){let e=this.bb.__offset(this.bb_pos,24);return e?this.bb.__vector_len(this.bb_pos+e):0}placementPayloads(e,t){let r=this.bb.__offset(this.bb_pos,26);return r?(t||new iu).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}placementPayloadsLength(){let e=this.bb.__offset(this.bb_pos,26);return e?this.bb.__vector_len(this.bb_pos+e):0}contentUiPaths(e,t){let r=this.bb.__offset(this.bb_pos,28);return r?(t||new bp).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}contentUiPathsLength(){let e=this.bb.__offset(this.bb_pos,28);return e?this.bb.__vector_len(this.bb_pos+e):0}contentPromotions(e,t){let r=this.bb.__offset(this.bb_pos,30);return r?(t||new _p).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}contentPromotionsLength(){let e=this.bb.__offset(this.bb_pos,30);return e?this.bb.__vector_len(this.bb_pos+e):0}personalizationTokens(e,t){let r=this.bb.__offset(this.bb_pos,32);return r?(t||new kp).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}personalizationTokensLength(){let e=this.bb.__offset(this.bb_pos,32);return e?this.bb.__vector_len(this.bb_pos+e):0}messageBlocks(e,t){let r=this.bb.__offset(this.bb_pos,34);return r?(t||new Xd).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}messageBlocksLength(){let e=this.bb.__offset(this.bb_pos,34);return e?this.bb.__vector_len(this.bb_pos+e):0}slotPlacementIndex(e,t){let r=this.bb.__offset(this.bb_pos,36);return r?(t||new ia).__init(this.bb.__vector(this.bb_pos+r)+e*8,this.bb):null}slotPlacementIndexLength(){let e=this.bb.__offset(this.bb_pos,36);return e?this.bb.__vector_len(this.bb_pos+e):0}themeJson(e){let t=this.bb.__offset(this.bb_pos,38);return t?this.bb.__string(this.bb_pos+t,e):null}contentOverrideKeys(e,t){let r=this.bb.__offset(this.bb_pos,40);return r?this.bb.__string(this.bb.__vector(this.bb_pos+r)+e*4,t):null}contentOverrideKeysLength(){let e=this.bb.__offset(this.bb_pos,40);return e?this.bb.__vector_len(this.bb_pos+e):0}contentOverrideEntries(e,t){let r=this.bb.__offset(this.bb_pos,42);return r?(t||new gp).__init(this.bb.__vector(this.bb_pos+r)+e*8,this.bb):null}contentOverrideEntriesLength(){let e=this.bb.__offset(this.bb_pos,42);return e?this.bb.__vector_len(this.bb_pos+e):0}contentOverrideIndex(e,t){let r=this.bb.__offset(this.bb_pos,44);return r?(t||new ia).__init(this.bb.__vector(this.bb_pos+r)+e*8,this.bb):null}contentOverrideIndexLength(){let e=this.bb.__offset(this.bb_pos,44);return e?this.bb.__vector_len(this.bb_pos+e):0}compileTimeSegmentKeys(e,t){let r=this.bb.__offset(this.bb_pos,46);return r?this.bb.__string(this.bb.__vector(this.bb_pos+r)+e*4,t):null}compileTimeSegmentKeysLength(){let e=this.bb.__offset(this.bb_pos,46);return e?this.bb.__vector_len(this.bb_pos+e):0}compileTimeSegmentMembers(e){let t=this.bb.__offset(this.bb_pos,48);return t?this.bb.readUint32(this.bb.__vector(this.bb_pos+t)+e*4):0}compileTimeSegmentMembersLength(){let e=this.bb.__offset(this.bb_pos,48);return e?this.bb.__vector_len(this.bb_pos+e):0}compileTimeSegmentMembersArray(){let e=this.bb.__offset(this.bb_pos,48);return e?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+e),this.bb.__vector_len(this.bb_pos+e)):null}compileTimeSegmentIndex(e,t){let r=this.bb.__offset(this.bb_pos,50);return r?(t||new ia).__init(this.bb.__vector(this.bb_pos+r)+e*8,this.bb):null}compileTimeSegmentIndexLength(){let e=this.bb.__offset(this.bb_pos,50);return e?this.bb.__vector_len(this.bb_pos+e):0}extensionRules(e,t){let r=this.bb.__offset(this.bb_pos,52);return r?(t||new Pp).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}extensionRulesLength(){let e=this.bb.__offset(this.bb_pos,52);return e?this.bb.__vector_len(this.bb_pos+e):0}seatTypes(e,t){let r=this.bb.__offset(this.bb_pos,54);return r?(t||new ou).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}seatTypesLength(){let e=this.bb.__offset(this.bb_pos,54);return e?this.bb.__vector_len(this.bb_pos+e):0}enforcementDefaults(e,t){let r=this.bb.__offset(this.bb_pos,56);return r?(t||new zd).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}enforcementDefaultsLength(){let e=this.bb.__offset(this.bb_pos,56);return e?this.bb.__vector_len(this.bb_pos+e):0}placementSettings(e,t){let r=this.bb.__offset(this.bb_pos,58);return r?(t||new su).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}placementSettingsLength(){let e=this.bb.__offset(this.bb_pos,58);return e?this.bb.__vector_len(this.bb_pos+e):0}segmentDimensions(e,t){let r=this.bb.__offset(this.bb_pos,60);return r?(t||new cu).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}segmentDimensionsLength(){let e=this.bb.__offset(this.bb_pos,60);return e?this.bb.__vector_len(this.bb_pos+e):0}meterBindings(e,t){let r=this.bb.__offset(this.bb_pos,62);return r?(t||new Jd).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}meterBindingsLength(){let e=this.bb.__offset(this.bb_pos,62);return e?this.bb.__vector_len(this.bb_pos+e):0}freeTrialRules(e,t){let r=this.bb.__offset(this.bb_pos,64);return r?(t||new $d).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}freeTrialRulesLength(){let e=this.bb.__offset(this.bb_pos,64);return e?this.bb.__vector_len(this.bb_pos+e):0}reverseTrialRules(e,t){let r=this.bb.__offset(this.bb_pos,66);return r?(t||new au).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}reverseTrialRulesLength(){let e=this.bb.__offset(this.bb_pos,66);return e?this.bb.__vector_len(this.bb_pos+e):0}static startRuleBundle(e){e.startObject(32);}static addHeader(e,t){e.addFieldOffset(0,t,0);}static addStringPool(e,t){e.addFieldOffset(1,t,0);}static createStringPoolVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startStringPoolVector(e,t){e.startVector(4,t,4);}static addPredicateFields(e,t){e.addFieldOffset(2,t,0);}static createPredicateFieldsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startPredicateFieldsVector(e,t){e.startVector(4,t,4);}static addPlans(e,t){e.addFieldOffset(3,t,0);}static createPlansVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startPlansVector(e,t){e.startVector(4,t,4);}static addEntitlements(e,t){e.addFieldOffset(4,t,0);}static createEntitlementsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startEntitlementsVector(e,t){e.startVector(4,t,4);}static addEntitlementRules(e,t){e.addFieldOffset(5,t,0);}static createEntitlementRulesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startEntitlementRulesVector(e,t){e.startVector(4,t,4);}static addSegments(e,t){e.addFieldOffset(6,t,0);}static createSegmentsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startSegmentsVector(e,t){e.startVector(4,t,4);}static addPlacementSlots(e,t){e.addFieldOffset(7,t,0);}static createPlacementSlotsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startPlacementSlotsVector(e,t){e.startVector(4,t,4);}static addSlotConfigs(e,t){e.addFieldOffset(8,t,0);}static createSlotConfigsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startSlotConfigsVector(e,t){e.startVector(4,t,4);}static addSurfaceTemplates(e,t){e.addFieldOffset(9,t,0);}static createSurfaceTemplatesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startSurfaceTemplatesVector(e,t){e.startVector(4,t,4);}static addPlacements(e,t){e.addFieldOffset(10,t,0);}static createPlacementsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startPlacementsVector(e,t){e.startVector(4,t,4);}static addPlacementPayloads(e,t){e.addFieldOffset(11,t,0);}static createPlacementPayloadsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startPlacementPayloadsVector(e,t){e.startVector(4,t,4);}static addContentUiPaths(e,t){e.addFieldOffset(12,t,0);}static createContentUiPathsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startContentUiPathsVector(e,t){e.startVector(4,t,4);}static addContentPromotions(e,t){e.addFieldOffset(13,t,0);}static createContentPromotionsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startContentPromotionsVector(e,t){e.startVector(4,t,4);}static addPersonalizationTokens(e,t){e.addFieldOffset(14,t,0);}static createPersonalizationTokensVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startPersonalizationTokensVector(e,t){e.startVector(4,t,4);}static addMessageBlocks(e,t){e.addFieldOffset(15,t,0);}static createMessageBlocksVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startMessageBlocksVector(e,t){e.startVector(4,t,4);}static addSlotPlacementIndex(e,t){e.addFieldOffset(16,t,0);}static startSlotPlacementIndexVector(e,t){e.startVector(8,t,4);}static addThemeJson(e,t){e.addFieldOffset(17,t,0);}static addContentOverrideKeys(e,t){e.addFieldOffset(18,t,0);}static createContentOverrideKeysVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startContentOverrideKeysVector(e,t){e.startVector(4,t,4);}static addContentOverrideEntries(e,t){e.addFieldOffset(19,t,0);}static startContentOverrideEntriesVector(e,t){e.startVector(8,t,4);}static addContentOverrideIndex(e,t){e.addFieldOffset(20,t,0);}static startContentOverrideIndexVector(e,t){e.startVector(8,t,4);}static addCompileTimeSegmentKeys(e,t){e.addFieldOffset(21,t,0);}static createCompileTimeSegmentKeysVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startCompileTimeSegmentKeysVector(e,t){e.startVector(4,t,4);}static addCompileTimeSegmentMembers(e,t){e.addFieldOffset(22,t,0);}static createCompileTimeSegmentMembersVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addInt32(t[r]);return e.endVector()}static startCompileTimeSegmentMembersVector(e,t){e.startVector(4,t,4);}static addCompileTimeSegmentIndex(e,t){e.addFieldOffset(23,t,0);}static startCompileTimeSegmentIndexVector(e,t){e.startVector(8,t,4);}static addExtensionRules(e,t){e.addFieldOffset(24,t,0);}static createExtensionRulesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startExtensionRulesVector(e,t){e.startVector(4,t,4);}static addSeatTypes(e,t){e.addFieldOffset(25,t,0);}static createSeatTypesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startSeatTypesVector(e,t){e.startVector(4,t,4);}static addEnforcementDefaults(e,t){e.addFieldOffset(26,t,0);}static createEnforcementDefaultsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startEnforcementDefaultsVector(e,t){e.startVector(4,t,4);}static addPlacementSettings(e,t){e.addFieldOffset(27,t,0);}static createPlacementSettingsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startPlacementSettingsVector(e,t){e.startVector(4,t,4);}static addSegmentDimensions(e,t){e.addFieldOffset(28,t,0);}static createSegmentDimensionsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startSegmentDimensionsVector(e,t){e.startVector(4,t,4);}static addMeterBindings(e,t){e.addFieldOffset(29,t,0);}static createMeterBindingsVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startMeterBindingsVector(e,t){e.startVector(4,t,4);}static addFreeTrialRules(e,t){e.addFieldOffset(30,t,0);}static createFreeTrialRulesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startFreeTrialRulesVector(e,t){e.startVector(4,t,4);}static addReverseTrialRules(e,t){e.addFieldOffset(31,t,0);}static createReverseTrialRulesVector(e,t){e.startVector(4,t.length,4);for(let r=t.length-1;r>=0;r--)e.addOffset(t[r]);return e.endVector()}static startReverseTrialRulesVector(e,t){e.startVector(4,t,4);}static endRuleBundle(e){let t=e.endObject();return e.requiredField(t,4),e.requiredField(t,6),t}static finishRuleBundleBuffer(e,t){e.finish(t,"RVTB");}static finishSizePrefixedRuleBundleBuffer(e,t){e.finish(t,"RVTB",true);}static createRuleBundle(e,t,r,i,s,a,o,p,v,l,x,I,C,S,V,G,re,Re,we,ke,ie,Ot,Qt,ar,J,Dt,an,nn,vt,Cn,Vr,Et,gn){return Kt.startRuleBundle(e),Kt.addHeader(e,t),Kt.addStringPool(e,r),Kt.addPredicateFields(e,i),Kt.addPlans(e,s),Kt.addEntitlements(e,a),Kt.addEntitlementRules(e,o),Kt.addSegments(e,p),Kt.addPlacementSlots(e,v),Kt.addSlotConfigs(e,l),Kt.addSurfaceTemplates(e,x),Kt.addPlacements(e,I),Kt.addPlacementPayloads(e,C),Kt.addContentUiPaths(e,S),Kt.addContentPromotions(e,V),Kt.addPersonalizationTokens(e,G),Kt.addMessageBlocks(e,re),Kt.addSlotPlacementIndex(e,Re),Kt.addThemeJson(e,we),Kt.addContentOverrideKeys(e,ke),Kt.addContentOverrideEntries(e,ie),Kt.addContentOverrideIndex(e,Ot),Kt.addCompileTimeSegmentKeys(e,Qt),Kt.addCompileTimeSegmentMembers(e,ar),Kt.addCompileTimeSegmentIndex(e,J),Kt.addExtensionRules(e,Dt),Kt.addSeatTypes(e,an),Kt.addEnforcementDefaults(e,nn),Kt.addPlacementSettings(e,vt),Kt.addSegmentDimensions(e,Cn),Kt.addMeterBindings(e,Vr),Kt.addFreeTrialRules(e,Et),Kt.addReverseTrialRules(e,gn),Kt.endRuleBundle(e)}};function n0(n){switch(n){case 1:return "feature";case 2:return "usage_limit";case 3:return "credits";case 4:return "seats";case 5:return "tiered";default:return "unknown"}}function r_(n){switch(n){case 1:return "hard_block";case 5:return "soft_block";case 6:return "degrade";case 7:return "allow_overage";case 2:return "soft_warn";case 3:return "throttle";case 4:return "notify";default:return "unknown"}}function r0(n){switch(n){case 1:return "account_pool";case 2:return "per_instance";case 3:return "per_user";case 4:return "per_user_pooled";default:return "unknown"}}function i0(n){switch(n){case 1:return "eq";case 2:return "neq";case 3:return "gt";case 4:return "lt";case 5:return "gte";case 6:return "lte";case 7:return "contains";case 8:return "in";default:return "unknown"}}var s0={0:"plan",1:"plan_variation",2:"addon",3:"addon_variation"};function a0(n){switch(n){case 1:return "fixed";case 2:return "gated";case 3:return "usage_credit_seat";case 4:return "trials";case 5:return "other_conversion";case 6:return "retention";default:return "unknown"}}function o0(n){return n===1?"free":n===2?"reverse":"none"}function l0(n){switch(n){case 1:return "session";case 2:return "day";case 3:return "week";case 4:return "month";case 5:return "lifetime";default:return "unknown"}}function c0(n){switch(n){case 1:return "best_value";case 2:return "custom";default:return "next_tier_up"}}function d0(n){switch(n){case 1:return "open_checkout_modal";case 2:return "navigate_to_plans";case 3:return "open_upgrade_modal";case 4:return "open_placement";case 5:return "book_demo";case 6:return "open_feature_tour";case 7:return "extend_trial";case 8:return "switch_billing_period";case 9:return "custom_url";case 10:return "dismiss";case 11:return "contact_sales";case 12:return "complete_onboarding";case 13:return "invite_teammate";case 14:return "refer_friend";case 15:return "verify_work_email";case 16:return "update_payment_method";case 17:return "enable_auto_renewal";case 18:return "manage_subscription";default:return "unknown"}}function u0(n){switch(n){case 1:return "monthly";case 2:return "annual";default:return "unknown"}}function m0(n){switch(n){case 1:return "user";case 2:return "plan";case 3:return "usage";case 4:return "trial";case 5:return "billing";case 6:return "promotion";case 7:return "custom";default:return "unknown"}}function p0(n){switch(n){case 1:return "string";case 2:return "number";case 3:return "currency";case 4:return "percentage";case 5:return "date";default:return "unknown"}}function f0(n){switch(n){case 1:return "draft";case 2:return "active";case 3:return "archived";default:return "unknown"}}function qi(n){return n<0n?null:Number(n)}function h0(n){let e=t=>n.stringPool(t)??"";return {header:_0(n),predicate_fields:sp(n.predicateFieldsLength(),t=>n.predicateFields(t)??""),plans:Yn(n.plansLength(),t=>b0(n,t,e)),entitlements:Yn(n.entitlementsLength(),t=>v0(n,t,e)),entitlement_rules:Yn(n.entitlementRulesLength(),t=>y0(n,t,e)),segments:Yn(n.segmentsLength(),t=>S0(n,t,e)),placement_slots:Yn(n.placementSlotsLength(),t=>I0(n,t,e)),slot_configs:Yn(n.slotConfigsLength(),t=>P0(n,t,e)),surface_templates:Yn(n.surfaceTemplatesLength(),t=>T0(n,t,e)),placements:Yn(n.placementsLength(),t=>C0(n,t,e)),placement_payloads:Yn(n.placementPayloadsLength(),t=>w0(n,t,e)),content_ui_paths:Yn(n.contentUiPathsLength(),t=>O0(n,t,e)),content_promotions:Yn(n.contentPromotionsLength(),t=>A0(n,t,e)),personalization_tokens:Yn(n.personalizationTokensLength(),t=>j0(n,t,e)),message_blocks:Yn(n.messageBlocksLength(),t=>F0(n,t,e)),slot_placement_index:ap(n.slotPlacementIndexLength(),t=>n.slotPlacementIndex(t,new ia)),theme_json:n.themeJson()??"",content_override_keys:sp(n.contentOverrideKeysLength(),t=>n.contentOverrideKeys(t)??""),content_override_entries:Yn(n.contentOverrideEntriesLength(),t=>L0(n,t,e)),content_override_index:ap(n.contentOverrideIndexLength(),t=>n.contentOverrideIndex(t,new ia)),compile_time_segment_keys:sp(n.compileTimeSegmentKeysLength(),t=>n.compileTimeSegmentKeys(t)??""),compile_time_segment_members:g0(n.compileTimeSegmentMembersLength(),t=>n.compileTimeSegmentMembers(t)??0),compile_time_segment_index:ap(n.compileTimeSegmentIndexLength(),t=>n.compileTimeSegmentIndex(t,new ia)),extension_rules:Yn(n.extensionRulesLength(),t=>V0(n,t,e)),seat_types:Yn(n.seatTypesLength(),t=>U0(n,t,e)),enforcement_defaults:Yn(n.enforcementDefaultsLength(),t=>B0(n,t,e)),placement_settings:Yn(n.placementSettingsLength(),t=>q0(n,t,e)),segment_dimensions:Yn(n.segmentDimensionsLength(),t=>D0(n,t,e)),meter_bindings:Yn(n.meterBindingsLength(),t=>M0(n,t,e)),free_trial_rules:Yn(n.freeTrialRulesLength(),t=>N0(n,t,e)),reverse_trial_rules:Yn(n.reverseTrialRulesLength(),t=>H0(n,t,e))}}function Yn(n,e){let t=[];for(let r=0;r<n;r++)t.push(e(r));return t}function sp(n,e){let t=[];for(let r=0;r<n;r++)t.push(e(r));return t}function g0(n,e){let t=[];for(let r=0;r<n;r++)t.push(e(r));return t}function ap(n,e){let t=[];for(let r=0;r<n;r++){let i=e(r);t.push({start:i?i.start():0,count:i?i.count():0});}return t}function _0(n){let e=n.header(new Zd);if(!e)throw new Error("decodeBundleToIR: header missing from bundle");return {schema_version:e.schemaVersion(),runtime_abi:e.runtimeAbi(),config_version:e.configVersion()??"",exported_at_ms:Number(e.exportedAtMs()),built_at_ms:Number(e.builtAtMs()),source_sha256:e.sourceSha256()??"",tenant_id:e.tenantId()??"",change_set_id:e.changeSetId()??"",package_schema_version:e.packageSchemaVersion()??"",environment_id:e.environmentId()??"",playbook_handle:e.playbookHandle()??""}}function b0(n,e,t){let r=n.plans(e,new ko);return {source_id:t(r.sourceId()),unique_handle:t(r.uniqueHandle()),name:t(r.name()),tier_position:r.tierPosition(),sort_order:r.sortOrder()}}function v0(n,e,t){let r=n.entitlements(e,new sc),i=[];for(let s=0;s<r.tierHandlesLength();s++)i.push(t(r.tierHandles(s)));return {source_id:t(r.sourceId()),unique_handle:t(r.uniqueHandle()),name:t(r.name()),type:n0(r.type()),unit:t(r.unit()),tier_handles:i}}function y0(n,e,t){let r=n.entitlementRules(e,new Gd),i=[];for(let o=0;o<r.planIdxsLength();o++)i.push(r.planIdxs(o));let s=[];for(let o=0;o<r.segmentIdxsLength();o++)s.push(r.segmentIdxs(o));let a=[];for(let o=0;o<r.targetsLength();o++){let p=r.targets(o,new Kd);p&&a.push({kind:s0[p.kind()]??"plan",id:p.id()??""});}return {source_id:t(r.sourceId()),entitlement_idx:r.entitlementIdx(),plan_idxs:i,segment_idxs:s,type_fields:x0(r,t),allocation:r0(r.allocation()),targets:a}}function x0(n,e){switch(n.typeFieldsType()){case 1:return {kind:"feature",enabled:n.typeFields(new yp)?.enabled()??false};case 2:{let t=n.typeFields(new Ip);return {kind:"usage_limit",limit_value:t?qi(t.limitValue()):null,enforcement:r_(t?.enforcement()??0)}}case 3:{let t=n.typeFields(new vp);return {kind:"credits",allowance:t?qi(t.allowance()):null,rollover:t?.rollover()??false,max_balance:t?qi(t.maxBalance()):null,initial_grant:t?qi(t.initialGrant()):null,enforcement:r_(t?.enforcement()??0)}}case 4:{let t=n.typeFields(new xp);return {kind:"seats",included_count:t?qi(t.includedCount()):null,seat_type_source_id:e(t?.seatTypeSourceId()??0)}}case 5:{let t=n.typeFields(new Sp);return {kind:"tiered",tier_value:e(t?.tierValue()??0)}}default:return {kind:"feature",enabled:false}}}function S0(n,e,t){let r=n.segments(e,new oc),i=[],s=new lu;for(let a=0;a<r.predicatesLength();a++){let o=r.predicates(a,s);o&&i.push({field_idx:o.fieldIdx(),op:i0(o.op()),value:t(o.value())});}return {source_id:t(r.sourceId()),name:t(r.name()),slug:t(r.slug()),combinator:r.combinator()===1?"or":"and",predicates:i,dimension_id:t(r.dimensionId()),experiment_id:t(r.experimentId())}}function I0(n,e,t){let r=n.placementSlots(e,new ac);return {source_id:t(r.sourceId()),label:t(r.label()),description:t(r.description()),surface_type:t(r.surfaceType()),placement_handle:t(r.placementHandle()),template:t(r.template())}}function P0(n,e,t){let r=n.slotConfigs(e,new Ep),i=[];for(let s=0;s<r.triggersLength();s++)i.push(t(r.triggers(s)));return {slot_idx:r.slotIdx(),active:r.active(),triggers:i}}function T0(n,e,t){let r=n.surfaceTemplates(e,new lc),i=[],s=new du;for(let a=0;a<r.fieldsLength();a++){let o=r.fields(a,s);o&&i.push({name:t(o.name()),type:t(o.type()),required:o.required()});}return {source_id:t(r.sourceId()),surface_type:t(r.surfaceType()),fields:i}}function C0(n,e,t){let r=n.placements(e,new Co),i=[],s=new nu;for(let a=0;a<r.payloadsLength();a++)r.payloads(a,s)&&i.push(R0(s,t));return {source_id:t(r.sourceId()),name:t(r.name()),category:a0(r.category()),trigger:k0(r.trigger(new Qd),t),payloads:i,order:r.order()}}function k0(n,e){if(!n)return {kind:"unknown"};switch(n.type()){case 1:return {kind:"surface_render",slot_idx:n.slotIdx()};case 2:return {kind:"entitlement_gate",entitlement_idx:n.entitlementIdx(),tier_threshold:e(n.tierThreshold())};case 3:return {kind:"usage_threshold",entitlement_idx:n.entitlementIdx(),threshold_percent:n.thresholdPercent()};case 4:return {kind:"credit_threshold",entitlement_idx:n.entitlementIdx(),threshold_percent:n.thresholdPercent()};case 5:return {kind:"seat_threshold",entitlement_idx:n.entitlementIdx(),threshold_percent:n.thresholdPercent()};case 6:return {kind:"trial_started",trial_type:o0(n.trialType())};case 7:return {kind:"trial_progress",progress_percent:n.progressPercent()};case 8:return {kind:"trial_ending",days_before_end:n.daysBeforeEnd()};case 9:return {kind:"trial_ended"};case 10:return {kind:"trial_converted"};case 11:return {kind:"qualifier",qualifier:e(n.qualifier())};default:return {kind:"unknown"}}}function R0(n,e){let t=[],r=new Eo;for(let s=0;s<n.surfacesLength();s++)n.surfaces(s,r)&&t.push(g_(r,e));let i=[];for(let s=0;s<n.surfaceSlotIdsLength();s++)i.push(e(n.surfaceSlotIds(s)));return {source_id:e(n.sourceId()),target:f_(n.target(new uc),e),surfaces:t,caps:h_(n.caps(new dc)),created_at:e(n.createdAt()),recommendation_strategy:c0(n.recommendationStrategy()),recommendation_plan_override:e(n.recommendationPlanOverride()),surface_slot_ids:i,remind_later_minutes:n.remindLaterMinutes()}}function f_(n,e){if(!n)return {plan_idxs:[],segment_chips:[],billing_cadences:[]};let t=[];for(let a=0;a<n.planIdxsLength();a++)t.push(n.planIdxs(a));let r=[],i=new tu;for(let a=0;a<n.segmentChipsLength();a++){let o=n.segmentChips(a,i);o&&r.push(E0(o,e));}let s=[];for(let a=0;a<n.billingCadencesLength();a++)s.push(e(n.billingCadences(a)));return {plan_idxs:t,segment_chips:r,billing_cadences:s}}function E0(n,e){switch(n.kind()){case 1:return {kind:"segment",segment_idx:n.segmentIdx()};case 2:return {kind:"plan",plan_idx:n.planIdx()};case 3:return {kind:"literal",value:e(n.literal())};default:return {kind:"literal",value:""}}}function h_(n){return n?{has_max_per_period:n.hasMaxPerPeriod(),max_per_period_count:n.maxPerPeriodCount(),max_per_period:l0(n.maxPerPeriod()),cooldown_days:n.cooldownDays()}:{has_max_per_period:false,max_per_period_count:0,max_per_period:"unknown",cooldown_days:-1}}function g_(n,e){let t={},r=new Rp;for(let a=0;a<n.fieldsLength();a++){let o=n.fields(a,r);o&&(t[e(o.key())]=e(o.value()));}let i=[],s=new eu;for(let a=0;a<n.ctasLength();a++){let o=n.ctas(a,s);if(!o)continue;let p={},v=Math.min(o.configKeysLength(),o.configValuesLength());for(let l=0;l<v;l++)p[e(o.configKeys(l))]=e(o.configValues(l));i.push({label:e(o.label()),path:e(o.path()),config:p});}return {template_idx:n.templateIdx(),template_source_id:e(n.templateSourceId()),fields:t,ctas:i}}function w0(n,e,t){let r=n.placementPayloads(e,new iu),i=[],s=new Eo;for(let v=0;v<r.surfacesLength();v++)r.surfaces(v,s)&&i.push(g_(s,t));let a=[];for(let v=0;v<r.surfaceSlotIdsLength();v++)a.push(t(r.surfaceSlotIds(v)));let o=r.contentLink(new ru),p={message_block_idx:o?o.messageBlockIdx():cc,ui_path_idx:o?o.uiPathIdx():0,promotion_idx:o?o.promotionIdx():0,content_payload_source_id:o?t(o.contentPayloadSourceId()):""};return {source_id:t(r.sourceId()),placement_idx:r.placementIdx(),placement_source_id:t(r.placementSourceId()),target:f_(r.target(new uc),t),caps:h_(r.caps(new dc)),created_at:t(r.createdAt()),updated_at:t(r.updatedAt()),source_mode:r.sourceMode()===1?"content_linked":"inline",surfaces:i,content_link:p,surface_slot_ids:a,remind_later_minutes:r.remindLaterMinutes()}}function O0(n,e,t){let r=n.contentUiPaths(e,new bp);return {name:t(r.name()),action_type:d0(r.actionType()),plan_handle:t(r.planHandle()),promotion_idx:r.promotionIdx(),placement_handle:t(r.placementHandle()),url:t(r.url()),tour_id:t(r.tourId()),target_billing_period:u0(r.targetBillingPeriod()),description:t(r.description())}}function A0(n,e,t){let r=n.contentPromotions(e,new _p);return {source_id:t(r.sourceId()),name:t(r.name()),discount:t(r.discount()),type:t(r.type()),status:t(r.status())}}function j0(n,e,t){let r=n.personalizationTokens(e,new kp),i={},s=new Cp;for(let a=0;a<r.valueMapLength();a++){let o=r.valueMap(a,s);o&&(i[t(o.key())]=t(o.value()));}return {token:t(r.token()),label:t(r.label()),description:t(r.description()),category:m0(r.category()),data_source:t(r.dataSource()),example_value:t(r.exampleValue()),value_map:i,format:p0(r.format())}}function i_(n,e){if(!n)return {header:"",body:"",cta_label:"",secondary_cta_label:"",extra:{}};let t={},r=new Yd;for(let i=0;i<n.extraLength();i++){let s=n.extra(i,r);s&&(t[e(s.key())]=e(s.value()));}return {header:e(n.header()),body:e(n.body()),cta_label:e(n.ctaLabel()),secondary_cta_label:e(n.secondaryCtaLabel()),extra:t}}function F0(n,e,t){let r=n.messageBlocks(e,new Xd),i=[],s=new Wd;for(let v=0;v<r.segmentOverridesLength();v++){let l=r.segmentOverrides(v,s);l&&i.push({segment_value:t(l.segmentValue()),content:i_(l.content(new Fa),t)});}let a=[],o=new Tp;for(let v=0;v<r.childBlocksLength();v++){let l=r.childBlocks(v,o);l&&a.push({slot:t(l.slot()),block_idx:l.blockIdx(),block_source_id:t(l.blockSourceId())});}let p=[];for(let v=0;v<r.tokensUsedLength();v++)p.push(t(r.tokensUsed(v)));return {source_id:t(r.sourceId()),tenant_id:t(r.tenantId()),name:t(r.name()),surface_template_idx:r.surfaceTemplateIdx(),default_content:i_(r.defaultContent(new Fa),t),segment_overrides:i,child_blocks:a,tokens_used:p,status:f0(r.status()),created_at:t(r.createdAt()),updated_at:t(r.updatedAt())}}function L0(n,e,t){let r=n.contentOverrideEntries(e,new gp);return {key:t(r.key()),value:t(r.value())}}function V0(n,e,t){let r=n.extensionRules(e,new Pp),i=r.configArray()??new Uint8Array(0);return {kind:t(r.kind()),schema_version:r.schemaVersion(),config:i}}function U0(n,e,t){let r=n.seatTypes(e,new ou),i=[];for(let s=0;s<r.entitlementHandlesLength();s++)i.push(t(r.entitlementHandles(s)));return {handle:t(r.handle()),name:t(r.name()),is_default:r.isDefault(),entitlement_handles:i}}function B0(n,e,t){let r=n.enforcementDefaults(e,new zd),i=[];for(let s=0;s<r.notificationChannelsLength();s++)i.push(t(r.notificationChannels(s)));return {handle:t(r.handle()),entitlement_handle:t(r.entitlementHandle()),soft_limit_percent:qi(r.softLimitPercent()),hard_limit_percent:qi(r.hardLimitPercent()),soft_limit_action:t(r.softLimitAction()),hard_limit_action:t(r.hardLimitAction()),grace_period_hours:qi(r.gracePeriodHours()),notification_channels:i,is_active:r.isActive()}}function q0(n,e,t){let r=n.placementSettings(e,new su);return {handle:t(r.handle()),global_frequency_cap:t(r.globalFrequencyCap()),global_frequency_cap_period:t(r.globalFrequencyCapPeriod()),suppress_for_paid:r.suppressForPaid(),suppress_for_trial:r.suppressForTrial(),allow_stacking:r.allowStacking(),priority_collision_strategy:t(r.priorityCollisionStrategy())}}function D0(n,e,t){let r=n.segmentDimensions(e,new cu);return {handle:t(r.handle()),name:t(r.name()),category:t(r.category()),visibility_toggle:r.visibilityToggle(),source_type:t(r.sourceType())}}function M0(n,e,t){let r=n.meterBindings(e,new Jd);return {handle:t(r.handle()),entitlement_handle:t(r.entitlementHandle()),meter_handle:t(r.meterHandle()),limit:qi(r.limit()),reset_period:t(r.resetPeriod())}}function N0(n,e,t){let r=n.freeTrialRules(e,new $d);return {source_id:t(r.sourceId()),handle:t(r.handle()),plan_id:t(r.planId()),usage_entitlement_handle:t(r.usageEntitlementHandle()),usage_limit_value:qi(r.usageLimitValue())}}function H0(n,e,t){let r=n.reverseTrialRules(e,new au),i=[];for(let s=0;s<r.entitlementsDuringTrialLength();s++)i.push(t(r.entitlementsDuringTrial(s)));return {source_id:t(r.sourceId()),handle:t(r.handle()),premium_plan_id:t(r.premiumPlanId()),fallback_plan_id:t(r.fallbackPlanId()),entitlements_during_trial:i,is_active:r.isActive(),usage_entitlement_handle:t(r.usageEntitlementHandle()),usage_limit_value:qi(r.usageLimitValue())}}function z0(n){switch(n){case "feature":return "feature";case "usage_limit":return "usage_limit";case "credits":return "credits";case "seats":return "seat";case "tiered":return "capability_tier";default:return "price_per_unit"}}function s_(n){return n==="hard_block"||n==="soft_block"||n==="degrade"||n==="allow_overage"?n:void 0}function Ro(n){return n===cc}function K0(n){let e=l=>n.plans[l]?.unique_handle??"",t=l=>n.entitlements[l]?.unique_handle??"",r=l=>n.segments[l]?.slug??"",i=l=>n.placement_slots[l]?.source_id??"",s=l=>n.message_blocks[l]?.source_id??"",a=l=>n.content_promotions[l]?.source_id??"",o=l=>n.content_ui_paths[l]?.name??"",p=n.header,v={artifact_type:"playbook",format_version:p.config_version,playbook_version_id:p.change_set_id===""?null:p.change_set_id};if(p.playbook_handle&&(v.playbook_handle=p.playbook_handle),p.environment_id&&(v.environment_id=p.environment_id),p.tenant_id&&(v.tenant_id=p.tenant_id),p.package_schema_version&&(v.schema_version=p.package_schema_version),p.exported_at_ms&&(v.exported_at=new Date(p.exported_at_ms).toISOString()),v.plans=n.plans.map(l=>({unique_handle:l.unique_handle,name:l.name,tier_position:l.tier_position,sort_order:l.sort_order})),v.entitlements=n.entitlements.map(l=>{let x={unique_handle:l.unique_handle,name:l.name,type:z0(l.type)};return l.unit&&(x.unit=l.unit),l.tier_handles.length&&(x.tier_definitions=l.tier_handles.map(I=>({handle:I,name:I}))),x}),v.entitlement_rules=n.entitlement_rules.map(l=>{let x={id:l.source_id,entitlement_id:t(l.entitlement_idx)};return x.targets=l.targets.length?l.targets.map(I=>({kind:I.kind,id:I.id})):l.plan_idxs.map(I=>({kind:"plan",id:e(I)})),x.segment_ids=l.segment_idxs.map(I=>r(I)),l.allocation!=="unknown"&&(x.allocation=l.allocation),G0(x,l.type_fields),x}),v.segments=n.segments.map(l=>{let x={name:l.name,handle:l.slug,predicates:l.predicates.map(I=>({field:n.predicate_fields[I.field_idx]??"",operator:I.op==="unknown"?"eq":I.op,value:I.value}))};return l.dimension_id&&(x.dimension_id=l.dimension_id),x}),v.content_ui_paths=n.content_ui_paths.map(l=>{let x={name:l.name,action_type:l.action_type==="unknown"?"custom_url":l.action_type};return l.plan_handle&&(x.plan_handle=l.plan_handle),Ro(l.promotion_idx)||(x.promotion_id=a(l.promotion_idx)),l.placement_handle&&(x.placement_handle=l.placement_handle),l.url&&(x.url=l.url),l.tour_id&&(x.tour_id=l.tour_id),l.target_billing_period!=="unknown"&&(x.target_billing_period=l.target_billing_period),l.description&&(x.description=l.description),x}),n.placement_slots.length&&(v.placement_slots=n.placement_slots.map(l=>{let x={id:l.source_id,label:l.label,description:l.description,surface_type:l.surface_type,placement_handle:l.placement_handle};return l.template&&(x.template=l.template),x})),n.surface_templates.length&&(v.surface_templates=n.surface_templates.map(l=>({id:l.source_id,surface_type:l.surface_type,fields:l.fields.map(x=>{let I={name:x.name,required:x.required};return x.type&&(I.type=x.type),I})}))),n.placements.length&&(v.placements=n.placements.map(l=>({id:l.source_id,name:l.name,category:l.category==="unknown"?"fixed":l.category,trigger:$0(l.trigger,i,t),payloads:l.payloads.map(x=>Z0(x,e,r)),order:l.order}))),n.placement_payloads.length&&(v.placement_payloads=n.placement_payloads.map(l=>{let x={payload_id:l.source_id,placement_id:l.placement_source_id,target:__(l.target,e,r),created_at:l.created_at,source_mode:l.source_mode,surfaces:l.surfaces.map(S=>b_(S))};l.updated_at&&(x.updated_at=l.updated_at);let I=v_(l.caps);I&&(x.caps=I),l.surface_slot_ids.length&&(x.surface_slot_ids=l.surface_slot_ids),l.remind_later_minutes>=0&&(x.remind_later_minutes=l.remind_later_minutes);let C=Y0(l.content_link,s,a,o);return C&&(x.content_link=C),x})),n.content_promotions.length&&(v.content_promotions=n.content_promotions.map(l=>({id:l.source_id,name:l.name,discount:l.discount,type:l.type,status:l.status}))),n.personalization_tokens.length&&(v.personalization_tokens=n.personalization_tokens.map(l=>{let x={token:l.token,label:l.label};return l.description&&(x.description=l.description),l.category!=="unknown"&&(x.category=l.category),l.data_source&&(x.data_source=l.data_source),l.example_value&&(x.example_value=l.example_value),Object.keys(l.value_map).length&&(x.value_map={...l.value_map}),l.format!=="unknown"&&(x.format=l.format),x})),n.message_blocks.length&&(v.message_blocks=n.message_blocks.map(l=>{let x={block_id:l.source_id,tenant_id:l.tenant_id,name:l.name,default_content:a_(l.default_content),status:l.status==="unknown"?"draft":l.status,created_at:l.created_at,updated_at:l.updated_at};return Ro(l.surface_template_idx)||(x.surface_template_id=n.surface_templates[l.surface_template_idx]?.source_id??""),l.segment_overrides.length&&(x.segment_overrides=l.segment_overrides.map(I=>({segment_value_id:I.segment_value,content:a_(I.content)}))),l.child_blocks.length&&(x.child_blocks=l.child_blocks.map(I=>({slot:I.slot,block_id:Ro(I.block_idx)?I.block_source_id:s(I.block_idx)}))),l.tokens_used.length&&(x.tokens_used=[...l.tokens_used]),x})),n.slot_configs.length&&(v.slot_configs=n.slot_configs.map(l=>({slot_id:i(l.slot_idx),active:l.active,triggers:[...l.triggers]}))),n.seat_types.length&&(v.seat_types=n.seat_types.map(l=>({handle:l.handle,name:l.name,is_default:l.is_default,entitlement_handles:[...l.entitlement_handles]}))),n.enforcement_defaults.length&&(v.enforcement_defaults=n.enforcement_defaults.map(l=>({handle:l.handle,entitlement_handle:l.entitlement_handle===""?null:l.entitlement_handle,soft_limit_percent:l.soft_limit_percent,hard_limit_percent:l.hard_limit_percent,soft_limit_action:l.soft_limit_action,hard_limit_action:l.hard_limit_action,grace_period_hours:l.grace_period_hours,notification_channels:[...l.notification_channels],is_active:l.is_active}))),n.placement_settings.length&&(v.placement_settings=n.placement_settings.map(l=>({handle:l.handle,global_frequency_cap:l.global_frequency_cap===""?null:JSON.parse(l.global_frequency_cap),global_frequency_cap_period:l.global_frequency_cap_period===""?null:l.global_frequency_cap_period,suppress_for_paid:l.suppress_for_paid,suppress_for_trial:l.suppress_for_trial,allow_stacking:l.allow_stacking,priority_collision_strategy:l.priority_collision_strategy===""?null:l.priority_collision_strategy}))),n.segment_dimensions.length&&(v.segment_dimensions=n.segment_dimensions.map(l=>({handle:l.handle,name:l.name,category:l.category===""?null:l.category,visibility_toggle:l.visibility_toggle,source_type:l.source_type===""?null:l.source_type}))),n.meter_bindings.length&&(v.meter_bindings=n.meter_bindings.map(l=>({handle:l.handle,entitlement_handle:l.entitlement_handle,meter_handle:l.meter_handle,limit:l.limit,reset_period:l.reset_period===""?null:l.reset_period}))),n.free_trial_rules.length&&(v.free_trial_rules=n.free_trial_rules.map(l=>{let x={id:l.source_id,handle:l.handle,name:l.handle};return l.plan_id&&(x.plan_id=l.plan_id),l.usage_entitlement_handle&&(x.usage_entitlement_handle=l.usage_entitlement_handle),l.usage_limit_value!=null&&(x.usage_limit_value=l.usage_limit_value),x})),n.reverse_trial_rules.length&&(v.reverse_trial_rules=n.reverse_trial_rules.map(l=>{let x={id:l.source_id,handle:l.handle,name:l.handle,premium_plan_id:l.premium_plan_id,fallback_plan_id:l.fallback_plan_id,is_active:l.is_active};return l.entitlements_during_trial.length&&(x.entitlements_during_trial=[...l.entitlements_during_trial]),l.usage_entitlement_handle&&(x.usage_entitlement_handle=l.usage_entitlement_handle),l.usage_limit_value!=null&&(x.usage_limit_value=l.usage_limit_value),x})),n.theme_json&&(v.theme=JSON.parse(n.theme_json)),n.content_override_keys.length){let l={};n.content_override_keys.forEach((x,I)=>{let C=n.content_override_index[I],S={};if(C)for(let V=C.start;V<C.start+C.count;V++){let G=n.content_override_entries[V];G&&(S[G.key]=G.value);}l[x]=S;}),v.content_overrides=l;}return t_.parse(v)}function G0(n,e){switch(e.kind){case "feature":n.enabled=e.enabled;return;case "usage_limit":{n.limit_value=e.limit_value===null?"unlimited":e.limit_value;let t=s_(e.enforcement);t&&(n.enforcement=t);return}case "credits":{e.allowance!==null&&(n.allowance_value=e.allowance,e.allowance>0&&(n.reset_period="month")),n.rollover_enabled=e.rollover,n.max_balance=e.max_balance,e.initial_grant!==null&&(n.initial_grant=e.initial_grant);let t=s_(e.enforcement);t&&(n.enforcement=t);return}case "seats":n.included_count=e.included_count===null?"unlimited":e.included_count,e.seat_type_source_id&&(n.seat_type_id=e.seat_type_source_id);return;case "tiered":e.tier_value&&(n.tier_value=e.tier_value);return}}function $0(n,e,t){switch(n.kind){case "surface_render":return {type:"surface_render",slot_id:e(n.slot_idx)};case "entitlement_gate":{let r={type:"entitlement_gate",entitlement_handle:t(n.entitlement_idx)};return n.tier_threshold&&(r.tier_threshold=n.tier_threshold),r}case "usage_threshold":case "credit_threshold":case "seat_threshold":return {type:n.kind,entitlement_handle:t(n.entitlement_idx),threshold_percent:n.threshold_percent};case "trial_started":{let r={type:"trial_started"};return n.trial_type!=="none"&&(r.trial_type=n.trial_type),r}case "trial_progress":return {type:"trial_progress",progress_percent:n.progress_percent};case "trial_ending":return {type:"trial_ending",days_before_end:n.days_before_end};case "trial_ended":return {type:"trial_ended"};case "trial_converted":return {type:"trial_converted"};case "qualifier":return {type:"qualifier",qualifier:n.qualifier};default:return {type:"surface_render",slot_id:""}}}function Z0(n,e,t){let r={id:n.source_id,target:__(n.target,e,t),surfaces:n.surfaces.map(s=>b_(s))},i=v_(n.caps);return i&&(r.caps=i),n.created_at&&(r.created_at=n.created_at),n.recommendation_strategy!=="next_tier_up"&&(r.recommendation_strategy=n.recommendation_strategy),n.recommendation_plan_override&&(r.recommendation_plan_override=n.recommendation_plan_override),n.surface_slot_ids.length&&(r.surface_slot_ids=[...n.surface_slot_ids]),n.remind_later_minutes>=0&&(r.remind_later_minutes=n.remind_later_minutes),r}function __(n,e,t){let r={plan_ids:n.plan_idxs.map(i=>e(i)),segment_chips:n.segment_chips.map(i=>i.kind==="segment"?t(i.segment_idx):i.kind==="plan"?e(i.plan_idx):i.value)};return n.billing_cadences.length&&(r.billing_cadences=[...n.billing_cadences]),r}function b_(n){return {template_id:n.template_source_id,fields:{...n.fields},ctas:n.ctas.map(e=>{let t={label:e.label,path:e.path};return Object.keys(e.config).length&&(t.config={...e.config}),t})}}function v_(n){let e={};return n.has_max_per_period&&n.max_per_period!=="unknown"&&(e.max_per_period={count:n.max_per_period_count,period:n.max_per_period}),n.cooldown_days!==-1&&(e.cooldown_days=n.cooldown_days),Object.keys(e).length?e:void 0}function Y0(n,e,t,r){let i={};return Ro(n.message_block_idx)||(i.message_block_id=e(n.message_block_idx)),Ro(n.ui_path_idx)||(i.ui_path_id=r(n.ui_path_idx)),Ro(n.promotion_idx)||(i.promotion_id=t(n.promotion_idx)),n.content_payload_source_id&&(i.content_payload_id=n.content_payload_source_id),Object.keys(i).length?i:void 0}function a_(n){let e={...n.extra};return n.header&&(e.header=n.header),n.body&&(e.body=n.body),n.cta_label&&(e.cta_label=n.cta_label),n.secondary_cta_label&&(e.secondary_cta_label=n.secondary_cta_label),e}var wp=class{constructor(n){let e=n instanceof ArrayBuffer?new Uint8Array(n):n;if(this.bb=new Js(e),!fp.bufferHasIdentifier(this.bb))throw new Error("BundleHandle: not a RVTB FlatBuffer (missing file identifier)");if(this.root=fp.getRootAsRuleBundle(this.bb),this._header=X0(this.root),this._header.schemaVersion<n_||this._header.schemaVersion>op)throw new Error(`BundleHandle: unsupported schema_version=${this._header.schemaVersion} (reader supports ${n_}..${op})`);if(this._header.runtimeAbi!==lp)throw new Error(`BundleHandle: unsupported runtime_abi=${this._header.runtimeAbi} (reader supports ${lp})`)}header(){return this._header}toPlaybook(){return K0(h0(this.root))}pool(n){return n<0||n>=this.root.stringPoolLength()?"":this.root.stringPool(n)??""}*extensionRules(){let n=this.root.extensionRulesLength();for(let e=0;e<n;e++){let t=this.root.extensionRules(e);if(!t)continue;let r=t.configArray();yield {kind:this.pool(t.kind()),schemaVersion:t.schemaVersion(),config:r?new Uint8Array(r):new Uint8Array(0)};}}unknownExtensionKinds(n){let e=new Set,t=this.root.extensionRulesLength();for(let r=0;r<t;r++){let i=this.root.extensionRules(r);if(!i)continue;let s=this.pool(i.kind());s&&!n.has(s)&&e.add(s);}return e}predicateFieldsLength(){return this.root.predicateFieldsLength()}predicateField(n){return n<0||n>=this.root.predicateFieldsLength()?"":this.root.predicateFields(n)??""}plansLength(){return this.root.plansLength()}getPlan(n){if(n<0||n>=this.root.plansLength())return null;let e=this.root.plans(n,new ko);return e?{idx:n,sourceId:this.pool(e.sourceId()),uniqueHandle:this.pool(e.uniqueHandle()),name:this.pool(e.name()),tierPosition:e.tierPosition(),sortOrder:e.sortOrder()}:null}planIdxByHandle(n){if(!this._planByHandle){this._planByHandle=new Map;let e=new ko;for(let t=0;t<this.root.plansLength();t++)this.root.plans(t,e)&&this._planByHandle.set(this.pool(e.uniqueHandle()),t);}return this._planByHandle.get(n)??null}planIdxById(n){if(!this._planById){this._planById=new Map;let e=new ko;for(let t=0;t<this.root.plansLength();t++)this.root.plans(t,e)&&this._planById.set(this.pool(e.sourceId()),t);}return this._planById.get(n)??null}entitlementsLength(){return this.root.entitlementsLength()}getEntitlement(n){if(n<0||n>=this.root.entitlementsLength())return null;let e=this.root.entitlements(n,new sc);if(!e)return null;let t=[];for(let r=0;r<e.tierHandlesLength();r++)t.push(this.pool(e.tierHandles(r)));return {idx:n,sourceId:this.pool(e.sourceId()),uniqueHandle:this.pool(e.uniqueHandle()),name:this.pool(e.name()),type:oT(e.type()),unit:this.pool(e.unit()),tierHandles:t}}entitlementIdxByHandle(n){if(!this._entitlementByHandle){this._entitlementByHandle=new Map;let e=new sc;for(let t=0;t<this.root.entitlementsLength();t++)this.root.entitlements(t,e)&&this._entitlementByHandle.set(this.pool(e.uniqueHandle()),t);}return this._entitlementByHandle.get(n)??null}entitlementRulesLength(){return this.root.entitlementRulesLength()}getEntitlementRule(n){if(n<0||n>=this.root.entitlementRulesLength())return null;let e=this.root.entitlementRules(n,new Gd);if(!e)return null;let t=[];for(let s=0;s<e.planIdxsLength();s++)t.push(e.planIdxs(s));let r=[];for(let s=0;s<e.segmentIdxsLength();s++)r.push(e.segmentIdxs(s));let i=[];for(let s=0;s<e.targetsLength();s++){let a=e.targets(s,new Kd);a&&i.push({kind:lT[a.kind()]??"plan",id:a.id()??""});}return {idx:n,sourceId:this.pool(e.sourceId()),entitlementIdx:e.entitlementIdx(),planIdxs:t,segmentIdxs:r,typeFields:J0(e,this),allocation:cT(e.allocation()),targets:i}}segmentsLength(){return this.root.segmentsLength()}getSegment(n){if(n<0||n>=this.root.segmentsLength())return null;let e=this.root.segments(n,new oc);if(!e)return null;let t=[],r=new lu;for(let i=0;i<e.predicatesLength();i++){if(!e.predicates(i,r))continue;let s=r.fieldIdx();t.push({fieldIdx:s,field:this.predicateField(s),op:dT(r.op()),value:this.pool(r.value())});}return {idx:n,sourceId:this.pool(e.sourceId()),name:this.pool(e.name()),slug:this.pool(e.slug()),combinator:e.combinator()===1?"or":"and",predicates:t,dimensionId:this.pool(e.dimensionId()),experimentId:this.pool(e.experimentId())}}segmentIdxByHandle(n){if(!this._segmentByHandle){this._segmentByHandle=new Map;let e=new oc;for(let t=0;t<this.root.segmentsLength();t++)this.root.segments(t,e)&&this._segmentByHandle.set(this.pool(e.slug()),t);}return this._segmentByHandle.get(n)??null}slotsLength(){return this.root.placementSlotsLength()}getSlot(n){if(n<0||n>=this.root.placementSlotsLength())return null;let e=this.root.placementSlots(n,new ac);return e?{idx:n,sourceId:this.pool(e.sourceId()),label:this.pool(e.label()),description:this.pool(e.description()),surfaceType:this.pool(e.surfaceType()),placementHandle:this.pool(e.placementHandle()),template:this.pool(e.template())}:null}slotIdxById(n){if(!this._slotById){this._slotById=new Map;let e=new ac;for(let t=0;t<this.root.placementSlotsLength();t++)this.root.placementSlots(t,e)&&this._slotById.set(this.pool(e.sourceId()),t);}return this._slotById.get(n)??null}surfaceTemplatesLength(){return this.root.surfaceTemplatesLength()}getSurfaceTemplate(n){if(n<0||n>=this.root.surfaceTemplatesLength())return null;let e=this.root.surfaceTemplates(n,new lc);if(!e)return null;let t=[],r=new du;for(let i=0;i<e.fieldsLength();i++)e.fields(i,r)&&t.push({name:this.pool(r.name()),type:this.pool(r.type()),required:r.required()});return {idx:n,sourceId:this.pool(e.sourceId()),surfaceType:this.pool(e.surfaceType()),fields:t}}surfaceTemplateIdxById(n){if(!this._surfaceTemplateById){this._surfaceTemplateById=new Map;let e=new lc;for(let t=0;t<this.root.surfaceTemplatesLength();t++)this.root.surfaceTemplates(t,e)&&this._surfaceTemplateById.set(this.pool(e.sourceId()),t);}return this._surfaceTemplateById.get(n)??null}poolOrNull(n){let e=this.pool(n);return e===""?null:e}seatTypesLength(){return this.root.seatTypesLength()}getSeatType(n){if(n<0||n>=this.root.seatTypesLength())return null;let e=this.root.seatTypes(n,new ou);if(!e)return null;let t=[];for(let r=0;r<e.entitlementHandlesLength();r++)t.push(this.pool(e.entitlementHandles(r)??0));return {handle:this.pool(e.handle()),name:this.pool(e.name()),is_default:e.isDefault(),entitlement_handles:t}}enforcementDefaultsLength(){return this.root.enforcementDefaultsLength()}getEnforcementDefault(n){if(n<0||n>=this.root.enforcementDefaultsLength())return null;let e=this.root.enforcementDefaults(n,new zd);if(!e)return null;let t=[];for(let r=0;r<e.notificationChannelsLength();r++)t.push(this.pool(e.notificationChannels(r)??0));return {handle:this.pool(e.handle()),entitlement_handle:this.poolOrNull(e.entitlementHandle()),soft_limit_percent:So(e.softLimitPercent()),hard_limit_percent:So(e.hardLimitPercent()),soft_limit_action:this.pool(e.softLimitAction()),hard_limit_action:this.pool(e.hardLimitAction()),grace_period_hours:So(e.gracePeriodHours()),notification_channels:t,is_active:e.isActive()}}placementSettingsLength(){return this.root.placementSettingsLength()}getPlacementSetting(n){if(n<0||n>=this.root.placementSettingsLength())return null;let e=this.root.placementSettings(n,new su);return e?{handle:this.pool(e.handle()),global_frequency_cap:W0(this.pool(e.globalFrequencyCap())),global_frequency_cap_period:this.poolOrNull(e.globalFrequencyCapPeriod()),suppress_for_paid:e.suppressForPaid(),suppress_for_trial:e.suppressForTrial(),allow_stacking:e.allowStacking(),priority_collision_strategy:this.poolOrNull(e.priorityCollisionStrategy())}:null}segmentDimensionsLength(){return this.root.segmentDimensionsLength()}getSegmentDimension(n){if(n<0||n>=this.root.segmentDimensionsLength())return null;let e=this.root.segmentDimensions(n,new cu);return e?{handle:this.pool(e.handle()),name:this.pool(e.name()),category:this.poolOrNull(e.category()),visibility_toggle:e.visibilityToggle(),source_type:this.poolOrNull(e.sourceType())}:null}meterBindingsLength(){return this.root.meterBindingsLength()}getMeterBinding(n){if(n<0||n>=this.root.meterBindingsLength())return null;let e=this.root.meterBindings(n,new Jd);return e?{handle:this.pool(e.handle()),entitlement_handle:this.pool(e.entitlementHandle()),meter_handle:this.pool(e.meterHandle()),limit:So(e.limit()),reset_period:this.poolOrNull(e.resetPeriod())}:null}freeTrialRulesLength(){return this.root.freeTrialRulesLength()}getFreeTrialRule(n){if(n<0||n>=this.root.freeTrialRulesLength())return null;let e=this.root.freeTrialRules(n,new $d);return e?{source_id:this.pool(e.sourceId()),handle:this.pool(e.handle()),plan_id:this.poolOrNull(e.planId()),usage_entitlement_handle:this.poolOrNull(e.usageEntitlementHandle()),usage_limit_value:So(e.usageLimitValue())}:null}reverseTrialRulesLength(){return this.root.reverseTrialRulesLength()}getReverseTrialRule(n){if(n<0||n>=this.root.reverseTrialRulesLength())return null;let e=this.root.reverseTrialRules(n,new au);if(!e)return null;let t=[];for(let r=0;r<e.entitlementsDuringTrialLength();r++)t.push(this.pool(e.entitlementsDuringTrial(r)??0));return {source_id:this.pool(e.sourceId()),handle:this.pool(e.handle()),premium_plan_id:this.pool(e.premiumPlanId()),fallback_plan_id:this.pool(e.fallbackPlanId()),entitlements_during_trial:t,is_active:e.isActive(),usage_entitlement_handle:this.poolOrNull(e.usageEntitlementHandle()),usage_limit_value:So(e.usageLimitValue())}}placementsLength(){return this.root.placementsLength()}getPlacement(n){if(n<0||n>=this.root.placementsLength())return null;let e=this.root.placements(n,new Co);if(!e)return null;let t=[],r=new nu;for(let s=0;s<e.payloadsLength();s++)e.payloads(s,r)&&t.push(eT(r,this));let i=e.trigger();return {idx:n,sourceId:this.pool(e.sourceId()),name:this.pool(e.name()),category:uT(e.category()),trigger:i?Q0(i,this):{kind:"unknown"},payloads:t,order:e.order()}}placementIdxById(n){if(!this._placementById){this._placementById=new Map;let e=new Co;for(let t=0;t<this.root.placementsLength();t++)this.root.placements(t,e)&&this._placementById.set(this.pool(e.sourceId()),t);}return this._placementById.get(n)??null}messageBlocksLength(){return this.root.messageBlocksLength()}getMessageBlock(n){if(n<0||n>=this.root.messageBlocksLength())return null;let e=this.root.messageBlocks(n,new Xd);return e?sT(e,this):null}placementPayloadsLength(){return this.root.placementPayloadsLength()}getPlacementPayload(n){if(n<0||n>=this.root.placementPayloadsLength())return null;let e=this.root.placementPayloads(n,new iu);if(!e)return null;let t=e.contentLink(new ru);return {sourceId:this.pool(e.sourceId()),placementSourceId:this.pool(e.placementSourceId()),sourceMode:e.sourceMode()===1?"content_linked":"inline",messageBlockIdx:t?t.messageBlockIdx():cc}}getPlacementsForSlot(n){if(n<0||n>=this.root.slotPlacementIndexLength())return [];let e=this.root.slotPlacementIndex(n,new ia);if(!e)return [];let t=this.surfaceRenderMembers(),r=e.start(),i=e.count();return t.slice(r,r+i)}surfaceRenderMembers(){if(this._slotPlacementMembers)return this._slotPlacementMembers;let n=[];for(let i=0;i<this.root.placementSlotsLength();i++)n.push([]);let e=new Co,t=new Qd;for(let i=0;i<this.root.placementsLength();i++){if(!this.root.placements(i,e))continue;let s=e.trigger(t);if(s&&s.type()===1){let a=s.slotIdx();a>=0&&a<n.length&&n[a].push(i);}}let r=[];for(let i of n)for(let s of i)r.push(s);return this._slotPlacementMembers=r,r}};function So(n){return n<0n?null:Number(n)}function W0(n){if(n==="")return null;let e=JSON.parse(n);return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function X0(n){let e=n.header(new Zd);if(!e)throw new Error("BundleHandle: header missing from bundle");return {schemaVersion:e.schemaVersion(),runtimeAbi:e.runtimeAbi(),configVersion:e.configVersion()??"",exportedAtMs:Number(e.exportedAtMs()),builtAtMs:Number(e.builtAtMs()),sourceSha256:e.sourceSha256()??"",tenantId:e.tenantId()??"",changeSetId:e.changeSetId()??"",packageSchemaVersion:e.packageSchemaVersion()??"",environmentId:e.environmentId()??"",playbookHandle:e.playbookHandle()??""}}function J0(n,e){switch(n.typeFieldsType()){case 1:return {kind:"feature",enabled:n.typeFields(new yp)?.enabled()??false};case 2:{let t=n.typeFields(new Ip),r=t?Number(t.limitValue()):-1;return {kind:"usage_limit",limitValue:r===-1?null:r,enforcement:l_(t?.enforcement()??0)}}case 3:{let t=n.typeFields(new vp),r=t?Number(t.allowance()):-1,i=t?Number(t.maxBalance()):-1,s=t?Number(t.initialGrant()):-1;return {kind:"credits",allowance:r===-1?null:r,rollover:t?.rollover()??false,maxBalance:i===-1?null:i,initialGrant:s===-1?null:s,enforcement:l_(t?.enforcement()??0)}}case 4:{let t=n.typeFields(new xp),r=t?Number(t.includedCount()):-1;return {kind:"seats",includedCount:r===-1?null:r,seatTypeSourceId:e.pool(t?.seatTypeSourceId()??0)}}case 5:{let t=n.typeFields(new Sp);return {kind:"tiered",tierValue:e.pool(t?.tierValue()??0)}}default:return {kind:"unknown"}}}function Q0(n,e){switch(n.type()){case 1:return {kind:"surface_render",slotIdx:n.slotIdx()};case 2:return {kind:"entitlement_gate",entitlementIdx:n.entitlementIdx(),tierThreshold:e.pool(n.tierThreshold())};case 3:return {kind:"usage_threshold",entitlementIdx:n.entitlementIdx(),thresholdPercent:n.thresholdPercent()};case 4:return {kind:"credit_threshold",entitlementIdx:n.entitlementIdx(),thresholdPercent:n.thresholdPercent()};case 5:return {kind:"seat_threshold",entitlementIdx:n.entitlementIdx(),thresholdPercent:n.thresholdPercent()};case 6:{let t=n.trialType();return {kind:"trial_started",trialType:t===1?"free":t===2?"reverse":"none"}}case 7:return {kind:"trial_progress",progressPercent:n.progressPercent()};case 8:return {kind:"trial_ending",daysBeforeEnd:n.daysBeforeEnd()};case 9:return {kind:"trial_ended"};case 10:return {kind:"trial_converted"};case 11:return {kind:"qualifier",qualifier:e.pool(n.qualifier())};default:return {kind:"unknown"}}}function eT(n,e){let t=n.target(),r=[],i=new Eo;for(let a=0;a<n.surfacesLength();a++)n.surfaces(a,i)&&r.push(rT(i,e));let s=[];for(let a=0;a<n.surfaceSlotIdsLength();a++)s.push(e.pool(n.surfaceSlotIds(a)));return {sourceId:e.pool(n.sourceId()),target:t?tT(t,e):{planIdxs:[],segmentChips:[],billingCadences:[]},surfaces:r,caps:aT(n.caps()),createdAt:e.pool(n.createdAt()),recommendationStrategy:mT(n.recommendationStrategy()),recommendationPlanOverride:e.pool(n.recommendationPlanOverride()),surfaceSlotIds:s,remindLaterMinutes:n.remindLaterMinutes()}}function tT(n,e){let t=[];for(let a=0;a<n.planIdxsLength();a++)t.push(n.planIdxs(a));let r=[],i=new tu;for(let a=0;a<n.segmentChipsLength();a++)n.segmentChips(a,i)&&r.push(nT(i,e));let s=[];for(let a=0;a<n.billingCadencesLength();a++)s.push(e.pool(n.billingCadences(a)));return {planIdxs:t,segmentChips:r,billingCadences:s}}function nT(n,e){switch(n.kind()){case 1:return {kind:"segment",segment_idx:n.segmentIdx()};case 2:return {kind:"plan",plan_idx:n.planIdx()};case 3:return {kind:"literal",value:e.pool(n.literal())};default:return {kind:"literal",value:""}}}function rT(n,e){let t={};for(let s=0;s<n.fieldsLength();s++){let a=n.fields(s);a&&(t[e.pool(a.key())]=e.pool(a.value()));}let r=[],i=new eu;for(let s=0;s<n.ctasLength();s++){if(!n.ctas(s,i))continue;let a={},o=Math.min(i.configKeysLength(),i.configValuesLength());for(let p=0;p<o;p++)a[e.pool(i.configKeys(p))]=e.pool(i.configValues(p));r.push({label:e.pool(i.label()),path:e.pool(i.path()),config:a});}return {templateIdx:n.templateIdx(),templateSourceId:e.pool(n.templateSourceId()),fields:t,ctas:r}}function o_(n,e){let t={};if(!n)return t;let r=e.pool(n.header());r&&(t.header=r);let i=e.pool(n.body());i&&(t.body=i);let s=e.pool(n.ctaLabel());s&&(t.cta_label=s);let a=e.pool(n.secondaryCtaLabel());a&&(t.secondary_cta_label=a);let o=new Yd;for(let p=0;p<n.extraLength();p++){let v=n.extra(p,o);v&&(t[e.pool(v.key())]=e.pool(v.value()));}return t}function iT(n){switch(n){case 2:return "active";case 3:return "archived";default:return "draft"}}function sT(n,e){let t=[],r=new Wd;for(let i=0;i<n.segmentOverridesLength();i++)n.segmentOverrides(i,r)&&t.push({segment_value_id:e.pool(r.segmentValue()),content:o_(r.content(new Fa),e)});return {block_id:e.pool(n.sourceId()),tenant_id:e.pool(n.tenantId()),name:e.pool(n.name()),default_content:o_(n.defaultContent(new Fa),e),segment_overrides:t,status:iT(n.status()),created_at:e.pool(n.createdAt()),updated_at:e.pool(n.updatedAt())}}function aT(n){return n?{hasMaxPerPeriod:n.hasMaxPerPeriod(),maxPerPeriodCount:n.maxPerPeriodCount(),maxPerPeriod:pT(n.maxPerPeriod()),cooldownDays:n.cooldownDays()}:{hasMaxPerPeriod:false,maxPerPeriodCount:0,maxPerPeriod:"unknown",cooldownDays:-1}}function oT(n){switch(n){case 1:return "feature";case 2:return "usage_limit";case 3:return "credits";case 4:return "seats";case 5:return "tiered";default:return "unknown"}}function l_(n){switch(n){case 1:return "hard_block";case 5:return "soft_block";case 6:return "degrade";case 7:return "allow_overage";case 2:return "soft_warn";case 3:return "throttle";case 4:return "notify";default:return "unknown"}}var lT={0:"plan",1:"plan_variation",2:"addon",3:"addon_variation"};function cT(n){switch(n){case 1:return "account_pool";case 2:return "per_instance";case 3:return "per_user";case 4:return "per_user_pooled";default:return "unknown"}}function dT(n){switch(n){case 1:return "eq";case 2:return "neq";case 3:return "gt";case 4:return "lt";case 5:return "gte";case 6:return "lte";case 7:return "contains";case 8:return "in";default:return "unknown"}}function uT(n){switch(n){case 1:return "fixed";case 2:return "gated";case 3:return "usage_credit_seat";case 4:return "trials";case 5:return "other_conversion";case 6:return "retention";default:return "unknown"}}function mT(n){switch(n){case 1:return "best_value";case 2:return "custom";default:return "next_tier_up"}}function pT(n){switch(n){case 1:return "session";case 2:return "day";case 3:return "week";case 4:return "month";case 5:return "lifetime";default:return "unknown"}}var y_=cc;function Op(n){return !n||n.trialActive!==true||n.trialState==="expired"?null:typeof n.trialProgressPercent=="number"&&n.trialProgressPercent>=0?Math.min(100,n.trialProgressPercent):typeof n.trialDaysTotal=="number"&&typeof n.trialDaysRemaining=="number"&&n.trialDaysTotal>0?Math.max(0,n.trialDaysTotal-n.trialDaysRemaining)/n.trialDaysTotal*100:typeof n.trialUsageLimit=="number"&&typeof n.trialUsageConsumed=="number"&&n.trialUsageLimit>0?Math.min(100,Math.max(0,n.trialUsageConsumed/n.trialUsageLimit*100)):null}function hp(n,e){if(!n)return true;if(!e)return false;switch(n.kind){case "trial_started":{if(e.trialActive!==true)return false;let t=Op(e);return t===null?false:t<=5}case "trial_progress":return e.trialActive===true&&e.trialState!=="expired"&&e.trialState!=="converted";case "trial_ending":return e.trialActive!==true||e.trialLimitType==="usage"||typeof e.trialDaysRemaining!="number"?false:e.trialDaysRemaining<=n.daysBeforeEnd;case "trial_ended":return e.trialState==="expired";case "trial_converted":return e.trialState==="converted";default:return false}}function x_(n,e){let t=n.filter(a=>a.trialTrigger?.kind==="trial_progress");if(t.length===0)return null;let r=t.filter(a=>a.trialTrigger?.kind!=="trial_progress"?false:e>=a.trialTrigger.progressPercent);if(r.length===0)return null;let i=r[0];for(let a of r.slice(1)){let o=a.trialTrigger.kind==="trial_progress"?a.trialTrigger.progressPercent:-1,p=i.trialTrigger.kind==="trial_progress"?i.trialTrigger.progressPercent:-1;(o>p||o===p&&a.entryOrder<i.entryOrder)&&(i=a);}let s=r.filter(a=>a!==i).map(a=>a.ruleId).filter(a=>typeof a=="string"&&a.length>0);return {winner:i,supersededIds:s}}function S_(n){switch(n.kind){case "trial_started":return {kind:"trial_started"};case "trial_progress":return typeof n.progressPercent=="number"?{kind:"trial_progress",progressPercent:n.progressPercent}:void 0;case "trial_ending":return typeof n.daysBeforeEnd=="number"?{kind:"trial_ending",daysBeforeEnd:n.daysBeforeEnd}:void 0;case "trial_ended":return {kind:"trial_ended"};case "trial_converted":return {kind:"trial_converted"};default:return}}function I_(n){if(!(!n||typeof n.type!="string"))switch(n.type){case "trial_started":return {kind:"trial_started"};case "trial_progress":return typeof n.progress_percent=="number"?{kind:"trial_progress",progressPercent:n.progress_percent}:void 0;case "trial_ending":return typeof n.days_before_end=="number"?{kind:"trial_ending",daysBeforeEnd:n.days_before_end}:void 0;case "trial_ended":return {kind:"trial_ended"};case "trial_converted":return {kind:"trial_converted"};default:return}}function Ap(n){let e=Array.isArray(n.payloads)?n.payloads:[],t=new Map((Array.isArray(n.messageBlocks)?n.messageBlocks:[]).map(a=>[a.block_id,a])),r=Array.isArray(n.uiPaths)?n.uiPaths:[],i=Array.isArray(n.promotions)?n.promotions:[],s=Array.isArray(n.tokens)?n.tokens:[];return {listPayloads:a=>e.filter(o=>o.surface_template_id===a),getMessageBlockById:a=>t.get(a),getUiPathById:a=>r.find(o=>o.id===a||o.name===a),getPromotionById:a=>i.find(o=>o.id===a||o.name===a),listPersonalizationTokens:()=>s}}function P_(n,e){let t={...n};for(let r of e){let i=n[r.token];if(i==null||!r.value_map)continue;let s=String(i),a=r.value_map[s];a!==void 0&&(t[r.token]=a);}return t}function T_(n,e){let t={current_usage:"usage_current",current_limit:"usage_limit",remaining_usage:"usage_remaining"};return n.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g,(r,i)=>{let s=e[i];if(s===void 0){let a=t[i];a&&(s=e[a]);}return s===void 0?r:String(s)})}function C_(n,e){let t={};for(let[r,i]of Object.entries(n))typeof i=="string"?t[r]=T_(i,e):t[r]=i;return t}function fT(n,e){return C_(n,e)}async function k_(n,e,t,r,i){let a=(await Promise.resolve(t.listPayloads(n))).filter(l=>l.status==="active");if(a.length===0)return null;let o=new Set(e.segmentIds),p=(t.listPersonalizationTokens?await Promise.resolve(t.listPersonalizationTokens()):[]),v=P_(r,p);for(let l of a){let x=l.default_message_block_id,I,C=l.ui_path_id,S=l.promotion_id;if(l.segment_content_map){for(let ke of l.segment_content_map)if(o.has(ke.segment_id)){x=ke.message_block_id,I=ke.segment_id,ke.ui_path_id&&(C=ke.ui_path_id),ke.promotion_id&&(S=ke.promotion_id);break}}let V=await Promise.resolve(t.getMessageBlockById(x));if(!V||V.status!=="active")continue;let G={...V.default_content};if(V.segment_overrides){let ke=I?V.segment_overrides.find(ie=>ie.segment_value_id===I):V.segment_overrides.find(ie=>o.has(ie.segment_value_id));ke&&(G={...G,...ke.content},I=ke.segment_value_id);}let re=fT(G,v),Re;C&&t.getUiPathById&&(Re=await Promise.resolve(t.getUiPathById(C)));let we;return S&&t.getPromotionById&&(we=await Promise.resolve(t.getPromotionById(S))),{payload:l,messageBlock:V,resolvedContent:re,matchedSegmentId:I,uiPathId:C,promotionId:S,uiPath:Re??void 0,promotion:we??void 0}}return null}function hT(n,e){let t=e.grants;if(!t)return;let r=t.user?.[n]??t.instance?.[n]??t.account?.[n];switch(r?.allocation){case "account_pool":case "per_user_pooled":return t.account?.[n]??r;case "per_instance":return t.instance?.[n]??r;case "per_user":return t.user?.[n]??r;default:return r}}function gT(n,e){let t=hT(n,e);if(t&&typeof t.limit=="number")return {used:typeof t.used=="number"?t.used:0,limit:t.limit};let r=e.usage?.[n];return r&&typeof r.limit=="number"?{used:r.used,limit:r.limit,remaining:r.remaining}:null}function _T(n,e){if(!e)return null;let t=gT(n.entitlementHandle,e);return !t||!Number.isFinite(t.limit)||t.limit<=0?null:n.kind==="credit_threshold"&&typeof t.remaining=="number"?(t.limit-t.remaining)/t.limit*100:Number.isFinite(t.used)?t.used/t.limit*100:null}function c_(n,e){if(!n)return true;let t=_T(n,e);return t===null?false:t>=n.thresholdPercent}var{Unrestricted:Ie}=ji,{Persisted:mc,Transient:sa}=Ys,{External:xi,Internal:bT}=Wi,R_=Mn(un.Playbook,{sdkInput:true}),vT=Mn(un.Playbook,{inConfig:false,sdkInput:false}),yT=Mn(un.Playbook,{inConfig:false,sdkInput:true}),xT=Mn(un.Playbook,{inConfig:false,sdkInput:false,source:Fi.Runtime}),ST=z$1.enum(["none_always_on","overage_vs_upgrade","time_bound","payment_failed","payment_at_risk"]),IT={other_conversion:["none_always_on","overage_vs_upgrade","time_bound"],retention:["payment_failed","payment_at_risk"]};function PT(n){return IT[n]??[]}function TT(n,e){return PT(e).includes(n)}var E_=z$1.enum(["fixed","gated_feature","usage_limit","trial","other_conversion","retention"]).meta({id:"PlacementCategory","x-revturbine-schema-persistence":sa,"x-revturbine-schema-exposure":xi}),w_=z$1.enum(["session","day","week","month","lifetime"]).meta({id:"CapPeriod","x-revturbine-schema-persistence":sa,"x-revturbine-schema-exposure":xi}),CT=z$1.object({count:z$1.number().int().positive().meta(Ie),period:w_.meta(Ie)}).meta({id:"PlacementCapRule","x-revturbine-schema-persistence":sa,"x-revturbine-schema-exposure":xi});z$1.object({surface_type:z$1.string().min(1).meta(Ie),rules:z$1.array(CT).meta(Ie),cooldown_ms:z$1.number().int().nonnegative().optional().meta(Ie)}).meta({id:"SurfaceTypeCapRule","x-revturbine-schema-persistence":mc,"x-revturbine-schema-exposure":xi,...ji.Operational,...yT});var kT=z$1.enum(["open_checkout","view_plans","book_demo","contact_sales","complete_onboarding","invite_teammate","refer_friend","verify_work_email","update_payment_method","enable_auto_renewal","manage_subscription","switch_billing_period","extend_trial","open_rt_placement","dismiss","snooze","custom"]).meta({id:"CtaPathType","x-revturbine-schema-persistence":sa,"x-revturbine-schema-exposure":xi}),To=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...Ie,readOnly:true}),name:ks.meta(Ie),handle:Jn.meta(Ie),description:Rd.meta(Ie),category:E_.meta(Ie),drag_order_in_category:z$1.number().int().default(0).meta(Ie),surface_slot_id:z$1.string().optional().meta(Ie),entitlement_id:z$1.string().optional().meta(Ie),tier_threshold:z$1.string().optional().meta(Ie),threshold_percent:Ra.optional().meta(Ie),trial_type:z$1.enum(["free","reverse"]).optional().meta(Ie),trigger_type:z$1.string().optional().meta(Ie),trial_progress_percent:z$1.number().min(0).max(100).optional().meta(Ie),days_before_end:z$1.number().int().min(0).optional().meta(Ie),qualifier:ST.optional().meta(Ie),activation_window_start:z$1.string().datetime().optional().meta(Ie),activation_window_end:z$1.string().datetime().optional().meta(Ie),metadata:ci.meta(Ie)}).meta({id:"Placement","x-revturbine-schema-persistence":mc,"x-revturbine-schema-exposure":xi,...R_,...Ji()}),RT=Cr("PlacementAnchor"),ET=z$1.enum(["threshold_not_emitted"]).meta({id:"PlacementWarningCode","x-revturbine-schema-persistence":sa,"x-revturbine-schema-exposure":xi}),wT=z$1.object({code:ET.meta(Ie),message:z$1.string().min(1).meta(Ie),path:z$1.array(z$1.union([z$1.string(),z$1.number().int()])).optional().meta(Ie)}).meta({id:"PlacementWarning","x-revturbine-schema-persistence":sa,"x-revturbine-schema-exposure":xi}),d_=To.extend({warnings:z$1.array(wT).optional().meta(Ie)}).meta({id:"PlacementWriteResponse","x-revturbine-schema-persistence":sa,"x-revturbine-schema-exposure":xi}),OT=z$1.object({label:z$1.string().min(1).max(200).meta(Ie),cta_path_type:kT.meta(Ie),config_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Ie)}).meta({id:"CtaObject","x-revturbine-schema-persistence":sa,"x-revturbine-schema-exposure":xi}),ic=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({anchor_id:z$1.string().min(1).meta({...Ie,readOnly:true}),handle:Jn.meta({...Ie,readOnly:true}),placement_id:z$1.string().min(1).meta(Ie),drag_order:z$1.number().int().default(0).meta(Ie),target_plan_ids:z$1.array(z$1.string()).default([]).meta(Ie),target_plan_billing_cadences:z$1.array(z$1.string()).default([]).meta(Ie),target_segments:z$1.array(z$1.string()).default([]).meta(Ie),surface_slot_ids:z$1.array(z$1.string()).default([]).meta(Ie),surface_template_id:z$1.string().min(1).meta(Ie),content_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Ie),cta_list:z$1.array(OT).default([]).meta(Ie),max_per_period:z$1.number().int().min(0).nullable().default(null).meta(Ie),max_period_unit:w_.default("session").meta(Ie),cooldown_after_dismiss_days:z$1.number().int().min(0).default(7).meta(Ie),remind_later_minutes:z$1.number().int().min(0).nullable().default(null).meta(Ie),recommendation_strategy:z$1.enum(["next_tier_up","best_value","custom"]).optional().default("next_tier_up").meta(Ie),recommendation_plan_override:z$1.string().optional().meta(Ie)}).meta({id:"PlacementPayload","x-revturbine-schema-persistence":mc,"x-revturbine-schema-exposure":xi,...R_,...Li()}),AT=Cr("PlacementPayloadAnchor");bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({handle:Jn.meta({...Ie,readOnly:true}),placement_payload_id:z$1.string().min(1).meta(Ie),experiment_id:z$1.string().min(1).meta(Ie),variant_name:z$1.string().min(1).max(200).meta(Ie),is_control:z$1.boolean().default(false).meta(Ie),traffic_allocation_percent:z$1.number().min(0).max(100).meta(Ie),override_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Ie),status:z$1.enum(["active","paused","complete"]).default("active").meta(Ie)}).meta({id:"PlacementVariant","x-revturbine-schema-persistence":mc,"x-revturbine-schema-exposure":bT,...vT,...Li()});var jT=bn.merge(kn).merge(Rn).merge($n).merge(Qn).extend({surface_slot_handle:z$1.string().min(1).max(200).meta(Ie),surface_type:Em.meta(Ie),surface_template_ids:z$1.array(z$1.string()).default([]).meta(Ie),surface_slot_category:z$1.enum(["fixed","gated","triggered"]).default("fixed").meta(Ie),first_seen:z$1.string().datetime().meta({...Ie,readOnly:true}),last_seen:z$1.string().datetime().meta({...Ie,readOnly:true}),status:z$1.enum(["active","inactive","new"]).default("new").meta(Ie),placement_count:z$1.number().int().min(0).default(0).meta({...Ie,readOnly:true})}).meta({id:"SurfaceSlot","x-revturbine-schema-persistence":mc,"x-revturbine-schema-exposure":xi,...xT,...Ji("surface_slot_handle")}),FT=Jr(To),LT=Jr(ic);({"/api/placement-anchors":{get:R({operationId:"listPlacementAnchors",requestParams:{query:Wt},summary:"List placement anchors (identity registry)",tags:["placements"],responses:{200:{description:"Placement anchor list",content:{"application/json":{schema:Yt(RT)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-anchors",persistence:{table:"placements",mode:"list"}}})},"/api/placements":{get:R({operationId:"listPlacements",requestParams:{query:Wt},summary:"List placements",tags:["placements"],responses:{200:{description:"Placement list",content:{"application/json":{schema:Yt(To)}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"list"}}}),post:R({operationId:"createPlacement",summary:"Create placement",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:Tr(To)}}},responses:{201:{description:"Created",content:{"application/json":{schema:d_}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"create"}}})},"/api/placements/{placementId}":{get:R({operationId:"getPlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Get placement",tags:["placements"],responses:{200:{description:"Placement detail",content:{"application/json":{schema:To}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"get"}}}),patch:R({operationId:"updatePlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Update placement",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:FT}}},responses:{200:{description:"Updated",content:{"application/json":{schema:d_}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"update"}}}),delete:R({operationId:"deletePlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Delete placement",tags:["placements"],responses:{204:{description:"Deleted"},default:{description:"Error",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"delete"}}})},"/api/placements/{placementId}/duplicate":{post:R({operationId:"duplicatePlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Duplicate placement",tags:["placements"],responses:{201:{description:"Duplicated",content:{"application/json":{schema:To}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"duplicate"}}})},"/api/placements/reorder":{post:R({operationId:"reorderPlacements",summary:"Reorder placements within category",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({category:E_,ids:z$1.array(z$1.string())})}}},responses:{200:{description:"Reordered"}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"reorder"}}})},"/api/placement-payload-anchors":{get:R({operationId:"listPlacementPayloadAnchors",requestParams:{query:Wt},summary:"List placement payload anchors (identity registry)",tags:["placements"],responses:{200:{description:"Placement payload anchor list",content:{"application/json":{schema:Yt(AT)}}},default:{description:"Error response",content:{"application/json":{schema:Zn}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-payload-anchors",persistence:{table:"placementPayloads",mode:"list"}}})},"/api/placements/{placementId}/payloads":{get:R({operationId:"listPlacementPayloads",requestParams:{path:z$1.object({placementId:z$1.string()}),query:Wt},summary:"List placement payloads",tags:["placements"],responses:{200:{description:"Payload list",content:{"application/json":{schema:Yt(ic)}}}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"list"}}}),post:R({operationId:"createPlacementPayload",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Create placement payload",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:Tr(ic)}}},responses:{201:{description:"Created",content:{"application/json":{schema:ic}}}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"create"}}})},"/api/placement-payloads/{payloadId}":{patch:R({operationId:"updatePlacementPayload",requestParams:{path:z$1.object({payloadId:z$1.string()})},summary:"Update placement payload",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:LT}}},responses:{200:{description:"Updated",content:{"application/json":{schema:ic}}}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"update"}}}),delete:R({operationId:"deletePlacementPayload",requestParams:{path:z$1.object({payloadId:z$1.string()})},summary:"Delete placement payload",tags:["placements"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"delete"}}})},"/api/surface-slots":{get:R({operationId:"listSurfaceSlots",requestParams:{query:Wt},summary:"List auto-discovered surface slots",tags:["placements"],responses:{200:{description:"Surface slot list",content:{"application/json":{schema:Yt(jT)}}}},"x-revturbine-operation":{exposure:"external",resource:"surface-slots",persistence:{table:"surfaceSlots",mode:"list"}}})}});function u_(n,e,t){if(!n)return true;if(!TT(n.qualifier,e))return false;switch(n.qualifier){case "none_always_on":return true;case "payment_failed":return t?.paymentFailed===true;case "payment_at_risk":return t?.paymentAtRisk===true;default:return true}}function m_(n,e,t){if(!n||!n.tierThreshold)return true;let r=e.get(n.entitlementHandle);if(!r||r.length===0)return false;let i=r.indexOf(n.tierThreshold);if(i<0)return false;let s=t?.tiers?.[n.entitlementHandle];return (s?r.indexOf(s):-1)<i}var O_={modal_overlay:"modal",banner_placement:"banner",in_page_card:"in_page",inline_gate_message:"in_page",usage_counter:"in_page",button:"button",email:"email",full_page:"full_page"};function VT(n,e){return n.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g,(t,r)=>{let i=e[r];return i==null?`{{${r}}}`:String(i)})}function UT(n){let e={};for(let[t,r]of Object.entries(n)){if(typeof r=="string"){e[t]=VT(r,n);continue}e[t]=r;}return e}function A_(n){if(!n?.path)return {type:"dismiss"};let e=n.path,t=n.config??{};return e==="open_checkout"?{type:"open_checkout_modal",plan_handle:typeof t.purchase=="string"?t.purchase:void 0}:e==="view_plans"?{type:"navigate_to_plans"}:e==="open_rt_placement"?{type:"open_rt_placement",placement_handle:typeof t.placement_handle=="string"?t.placement_handle:void 0}:{type:e,...t}}function j_(n,e){if(n==="qualifier"&&!(typeof e!="string"||e.length===0))return {kind:"qualifier",qualifier:e}}function BT(n){if(!n||typeof n!="object")return;let e="type"in n&&typeof n.type=="string"?n.type:void 0,t="qualifier"in n?n.qualifier:void 0;return j_(e,t)}function qT(n){if(n)return j_(n.kind,n.qualifier)}function F_(n,e,t){if(!(n!=="usage_threshold"&&n!=="credit_threshold"&&n!=="seat_threshold")&&!(typeof e!="string"||e.length===0)&&!(typeof t!="number"||!Number.isFinite(t)))return {kind:n,entitlementHandle:e,thresholdPercent:t}}function DT(n,e){if(!n||typeof n!="object")return;let t="type"in n&&typeof n.type=="string"?n.type:void 0,r="threshold_percent"in n?n.threshold_percent:void 0;return F_(t,e,r)}function MT(n,e){if(n)return F_(n.kind,e,n.thresholdPercent)}function L_(n,e,t){if(n!=="entitlement_gate"||typeof e!="string"||e.length===0)return;let r=typeof t=="string"&&t.length>0?t:void 0;return {kind:"entitlement_gate",entitlementHandle:e,tierThreshold:r}}function NT(n,e){if(!n||typeof n!="object")return;let t="type"in n&&typeof n.type=="string"?n.type:void 0,r="tier_threshold"in n?n.tier_threshold:void 0;return L_(t,e,r)}function HT(n,e){if(n)return L_(n.kind,e,n.tierThreshold)}function zT(n){if(!n||typeof n!="object"||!("entitlement_handle"in n))return;let e=n.entitlement_handle;return typeof e=="string"?e:void 0}function KT(n){if(!n||typeof n!="object"||!("slot_id"in n))return;let e=n.slot_id;return typeof e=="string"?e:void 0}function GT(n,e){let t={...O_};for(let o of n.surface_templates??[])t[o.id]=o.surface_type;let r=new Map;for(let o of n.plans??[])r.set(o.unique_handle,o.unique_handle);let i=new Map;for(let o of n.entitlements??[])o.tier_definitions?.length&&i.set(o.unique_handle,o.tier_definitions.map(p=>p.handle));let s=new Map,a=new Map;for(let o of e.placements){let p=o.payloads[0];if(!p)continue;let v=p.surfaces[0];if(!v)continue;let l=v.template_id,x=t[l]??"custom",I={...v.fields};v.ctas?.[0]&&(I.cta_label=v.ctas[0].label),v.ctas?.[1]&&(I.secondary_cta_label=v.ctas[1].label);let C=A_(v.ctas?.[0]),S=Array.isArray(p.target?.plan_ids)?p.target.plan_ids:[],V=zT(o.trigger),G=KT(o.trigger),re=I_(o.trigger),Re=DT(o.trigger,V),we=BT(o.trigger),ke=NT(o.trigger,V),ie={output_id:p.id,category:o.category,surface:{template:l,type:x,slot_id:o.id},content:{...I,__target_plan_ids:S,...V?{__trigger_entitlement_handle:V}:{},...re?{__trigger_kind:re.kind}:{}},cta_path:C,rule_id:o.id,decision_id:p.id,config_version:Td(n),present_upsell:true},Ot=s.get(l)??[];Ot.push({output:ie,entryOrder:o.order??0,entryCategory:o.category,triggerEntitlementHandle:V,triggerSlotId:G,trialTrigger:re,thresholdTrigger:Re,qualifierTrigger:we,entitlementGateTrigger:ke}),s.set(l,Ot);let Qt=o.id.replace(/^pl_/,"");a.set(Qt,ie),a.set(o.id,ie);}for(let o of s.values())o.sort((p,v)=>p.entryOrder-v.entryOrder);return {outputsByTemplate:s,outputsByName:a,planHandleToId:r,tierLaddersByHandle:i}}function $T(n,e){let t=e.trigger;if(t.kind==="entitlement_gate"||t.kind==="usage_threshold"||t.kind==="credit_threshold"||t.kind==="seat_threshold")return n.getEntitlement(t.entitlementIdx)?.uniqueHandle}function ZT(n,e){return e.trigger.kind!=="surface_render"?void 0:n.getSlot(e.trigger.slotIdx)?.sourceId}function YT(n){let e={...O_};for(let o=0;o<n.surfaceTemplatesLength();o++){let p=n.getSurfaceTemplate(o);p&&(e[p.sourceId]=p.surfaceType);}let t=new Map;for(let o=0;o<n.plansLength();o++){let p=n.getPlan(o);p&&t.set(p.uniqueHandle,p.sourceId);}let r=new Map;for(let o=0;o<n.entitlementsLength();o++){let p=n.getEntitlement(o);p&&p.tierHandles.length>0&&r.set(p.uniqueHandle,p.tierHandles);}let i=new Map,s=new Map,a=n.header().configVersion;for(let o=0;o<n.placementsLength();o++){let p=n.getPlacement(o);if(!p)continue;let v=p.payloads[0];if(!v)continue;let l=v.surfaces[0];if(!l)continue;let x=l.templateSourceId,I=e[x]??"custom",C={...l.fields};l.ctas[0]&&(C.cta_label=l.ctas[0].label),l.ctas[1]&&(C.secondary_cta_label=l.ctas[1].label);let S=A_(l.ctas[0]),V=[];for(let J of v.target.planIdxs){let Dt=n.getPlan(J);Dt&&V.push(Dt.sourceId);}let G=$T(n,p),re=ZT(n,p),Re=S_(p.trigger),we=MT(p.trigger,G),ke=qT(p.trigger),ie=HT(p.trigger,G),Ot={output_id:v.sourceId,category:p.category,surface:{template:x,type:I,slot_id:p.sourceId},content:{...C,__target_plan_ids:V,...G?{__trigger_entitlement_handle:G}:{},...Re?{__trigger_kind:Re.kind}:{}},cta_path:S,rule_id:p.sourceId,decision_id:v.sourceId,config_version:a,present_upsell:true},Qt=i.get(x)??[];Qt.push({output:Ot,entryOrder:p.order,entryCategory:p.category,triggerEntitlementHandle:G,triggerSlotId:re,trialTrigger:Re,thresholdTrigger:we,qualifierTrigger:ke,entitlementGateTrigger:ie}),i.set(x,Qt);let ar=p.sourceId.replace(/^pl_/,"");s.set(ar,Ot),s.set(p.sourceId,Ot);}for(let o of i.values())o.sort((p,v)=>p.entryOrder-v.entryOrder);return {outputsByTemplate:i,outputsByName:s,planHandleToId:t,tierLaddersByHandle:r}}function WT(n,e){let t=n.message_blocks,r=n.placement_payloads;if(!t?.length||!r?.length)return;let i=new Map;for(let a of e.placements){let o=a.payloads[0]?.surfaces?.[0]?.template_id;o&&i.set(a.id,o);}let s=[];for(let a of r){let o=a.content_link?.message_block_id;if(!o)continue;let p=i.get(a.placement_id);p&&s.push({payload_id:a.payload_id,tenant_id:"",name:a.payload_id,surface_template_id:p,default_message_block_id:o,ui_path_id:a.content_link?.ui_path_id,promotion_id:a.content_link?.promotion_id,status:"active"});}if(s.length!==0)return Ap({payloads:s,messageBlocks:t,uiPaths:n.content_ui_paths,promotions:n.content_promotions,tokens:n.personalization_tokens})}function XT(n){let e=n.messageBlocksLength(),t=n.placementPayloadsLength();if(e===0||t===0)return;let r=new Map;for(let o=0;o<n.placementsLength();o++){let p=n.getPlacement(o);if(!p)continue;let v=p.payloads[0]?.surfaces?.[0]?.templateSourceId;v&&r.set(p.sourceId,v);}let i=[],s=new Map;for(let o=0;o<e;o++){let p=n.getMessageBlock(o);p&&(i.push(p),s.set(o,p.block_id));}let a=[];for(let o=0;o<t;o++){let p=n.getPlacementPayload(o);if(!p||p.messageBlockIdx===y_)continue;let v=s.get(p.messageBlockIdx);if(!v)continue;let l=r.get(p.placementSourceId);l&&a.push({payload_id:p.sourceId,tenant_id:"",name:p.sourceId,surface_template_id:l,default_message_block_id:v,status:"active"});}if(a.length!==0)return Ap({payloads:a,messageBlocks:i})}function JT(n){let e={};for(let t=0;t<n.segmentsLength();t++){let r=n.getSegment(t);r?.experimentId&&(e[r.slug]=r.experimentId);}return e}function V_(n){let{source:e,impressionHistory:t}=n,{outputsByTemplate:r,outputsByName:i,planHandleToId:s,tierLaddersByHandle:a}=e.format==="flatbuffer"?YT(e.handle):GT(e.exportedConfig,e.placements),o=e.format==="json"?WT(e.exportedConfig,e.placements):XT(e.handle),p=e.format==="json"?wg(e.exportedConfig.segments??[]):JT(e.handle);function v(l,x,I,C){let S=Array.isArray(l.content.__target_plan_ids)?l.content.__target_plan_ids.filter(G=>typeof G=="string"):[],V=Array.isArray(l.content.__target_billing_periods)?l.content.__target_billing_periods.filter(G=>typeof G=="string"):[];return ep({target_plan_ids:S,target_billing_periods:V,category:l.category},{currentPlanId:x,planHandle:I,billingPeriod:C}).eligible}return async(l,x,I)=>{let C=I?.__providers,S=C?.plan?.currentPlanHandle,V=C?.plan?.billingPeriod,G=S?s.get(S):void 0,re=Et=>typeof Et=="string"?Et:"",Re=Array.isArray(x?.metadata?.surface_template_ids)?x.metadata.surface_template_ids:void 0,we,ke=[];if(Re&&Re.length>0){let Et=[];for(let Zt of Re){let _r=r.get(Zt);_r&&Et.push(..._r);}if(Et.length===0)return p_(l,"no_candidates_for_template","No placements configured for this surface template");Et.sort((Zt,_r)=>Zt.entryOrder-_r.entryOrder);let gn=x?.metadata?.entitlement_handle,or=x?.metadata?.surface_slot_category,gi=or?{gated:["gated"],fixed:["fixed"],triggered:["usage_credit_seat","trials","other_conversion","retention"]}[or]:void 0,on=Et;if(gn){let Zt=Et.filter(_r=>_r.triggerEntitlementHandle===gn);Zt.length>0&&(on=Zt);}let Ur=x?.metadata?.surface_slot_id;if(Ur){let Zt=on.filter(_r=>_r.triggerSlotId===Ur);Zt.length>0&&(on=Zt);}if(x?.metadata?.fixedOnly===true&&(on=on.filter(Zt=>Zt.entryCategory==="fixed")),gi&&or!=="fixed"&&on.length>1){let Zt=on.filter(_r=>gi.includes(_r.entryCategory));Zt.length>0&&(on=Zt);}t&&(on=on.filter(Zt=>!t.isHiddenSync(Zt.output.rule_id??""))),on=on.filter(Zt=>hp(Zt.trialTrigger,C?.plan)),on=on.filter(Zt=>c_(Zt.thresholdTrigger,C?.entitlements)),on=on.filter(Zt=>u_(Zt.qualifierTrigger,Zt.entryCategory,C?.plan)),on=on.filter(Zt=>m_(Zt.entitlementGateTrigger,a,C?.entitlements));let li,dn=[],_i=Op(C?.plan);if(_i!==null&&on.length>1){let Zt=on.map(no=>({ruleId:no.output.rule_id??void 0,entryOrder:no.entryOrder,trialTrigger:no.trialTrigger,output:no.output})),_r=x_(Zt,_i);if(_r){li=_r.winner,dn=_r.supersededIds;let no=_r.winner.ruleId;on=on.filter(eg=>eg.trialTrigger?.kind!=="trial_progress"||(eg.output.rule_id??void 0)===no);}}let $s;for(let Zt of on)if(v(Zt.output,G,S,V)){we=Zt.output,$s=Zt;break}$s&&li&&li.ruleId===($s.output.rule_id??void 0)&&dn.length>0&&(we={...we,content:{...we.content,__superseded_placement_ids:dn}}),we||(ke=["no_eligible_candidate"]);}else {let Et=x?.name,gn=(Et?i.get(Et):void 0)??i.get(l.placementId),or;if(gn)for(let Gs of r.values()){let gi=Gs.find(on=>on.output===gn);if(gi){or=gi;break}}gn&&t?.isHiddenSync(gn.rule_id??"")?ke=["placement_retired"]:gn&&!hp(or?.trialTrigger,C?.plan)?ke=["trial_trigger_unmet"]:gn&&!c_(or?.thresholdTrigger,C?.entitlements)?ke=["threshold_trigger_unmet"]:gn&&!u_(or?.qualifierTrigger,or?.entryCategory??gn.category,C?.plan)?ke=["qualifier_trigger_unmet"]:gn&&!m_(or?.entitlementGateTrigger,a,C?.entitlements)?ke=["entitlement_gate_unmet"]:gn&&v(gn,G,S,V)?we=gn:gn?ke=["plan_target_mismatch"]:ke=["placement_not_found"];}if(!we){let Et=ke[0]??"placement_not_found";return p_(l,Et,"Placement not configured")}let ie=we.content,Ot=we.surface.template;if(o&&Ot){let Et={userId:typeof l.userId=="string"?l.userId:"",segmentIds:C?.segments?.segmentIds??[]},gn=await k_(Ot,Et,o,{});gn&&(ie={...we.content,...gn.resolvedContent});}let Qt={...ie},ar=typeof Qt.entitlement=="string"?Qt.entitlement:typeof Qt.__trigger_entitlement_handle=="string"?Qt.__trigger_entitlement_handle:void 0,J=ar?C?.entitlements?.usage?.[ar]:void 0;if(J){Qt.usage_remaining=Number.isFinite(J.remaining)?J.remaining:0,Qt.usage_limit=Number.isFinite(J.limit)?J.limit:0,Qt.usage_current=Number.isFinite(J.used)?J.used:0,Qt.usage_percent=J.limit>0?Math.min(100,Math.round(J.used/J.limit*100)):0;let Et=J.reset_date;typeof Et=="string"&&Et.length>0&&(Qt.reset_date=Et);}let Dt=UT(Qt),an=Og(p,C?.segments?.segmentIds??[],C?.experiments?.assignments),nn={...we,content:Dt,...an},Vr=!((we.category==="upsell"||we.category==="trial_conversion")&&S==="enterprise");return {placementId:l.placementId,requestId:`local_${Date.now()}`,visible:Vr,decisionSource:"fallback",reasonCodes:Vr?[]:["plan_tier_suppressed"],content:{header:re(nn.content.header),body:re(nn.content.body),cta_label:re(nn.content.cta_label),title:re(nn.content.header),cta:re(nn.content.cta_label)},output:nn}}}function p_(n,e,t){return {placementId:n.placementId,requestId:`local_${Date.now()}`,visible:false,decisionSource:"fallback",reasonCodes:[e],content:{header:t,body:"",cta_label:"",title:t,cta:""}}}function pc(n){return V_({source:{format:"json",exportedConfig:n.exportedConfig,placements:n.placements},impressionHistory:n.impressionHistory})}var U_=z$1.enum(["trial_started","trial_ending","trial_ended","trial_converted"]);z$1.object({stages:z$1.array(U_).default([]),days_before_end:z$1.number().int().min(0).max(365).nullable().default(null),trial_type:z$1.enum(["free","reverse"]).nullable().default(null)});z$1.object({threshold_percent:z$1.number().int().min(0).max(100),trial_type:z$1.enum(["free","reverse"]).nullable().default(null)});function hc(){return typeof window>"u"||typeof document>"u"}function Mr(){return !hc()}var uu=class{constructor(){this.providers=new Map,this.cache=new Map,this.unsubscribers=new Map;}register(n){let e=this.providers.get(n.domain);if(e&&this.unregister(e.domain),this.providers.set(n.domain,n),n.subscribe){let t=n.subscribe(r=>{this.cache.set(n.domain,{value:r,resolvedAt:Date.now(),ttlMs:n.cacheTtlMs??0});});this.unsubscribers.set(n.domain,t);}}unregister(n){this.providers.delete(n),this.cache.delete(n);let e=this.unsubscribers.get(n);e&&(e(),this.unsubscribers.delete(n));}clear(){for(let n of this.unsubscribers.values())n();this.providers.clear(),this.cache.clear(),this.unsubscribers.clear();}async resolveAll(){let n=Array.from(this.providers.entries()),e=await Promise.all(n.map(async([s,a])=>{let o=this.cache.get(s),p=Date.now();if(o&&o.ttlMs>0&&p-o.resolvedAt<o.ttlMs)return [s,o.value];let v=await a.resolve();return this.cache.set(s,{value:v,resolvedAt:p,ttlMs:a.cacheTtlMs??0}),[s,v]})),t={},r={},i=false;for(let[s,a]of e)if(s==="traits"||s.startsWith("traits:")){let o=a;o?.traits&&(Object.assign(r,o.traits),i=true);}else t[s]=a;return i&&(t.traits={traits:r}),t}async get(n){let e=this.providers.get(n);if(!e)return;let t=this.cache.get(n),r=Date.now();if(t&&t.ttlMs>0&&r-t.resolvedAt<t.ttlMs)return t.value;let i=await e.resolve();return this.cache.set(n,{value:i,resolvedAt:r,ttlMs:e.cacheTtlMs??0}),i}has(n){return this.providers.has(n)}get size(){return this.providers.size}invalidate(n){this.cache.delete(n);}invalidateAll(){this.cache.clear();}},nC=new Set(["cta_completed"]),rC=1440*60*1e3,B_=10080*60*1e3,iC="revturbine:interaction-state",sC=class{constructor(n){this.state=new Map,this.storage=n.storage,this.tenantId=n.tenantId,this.userId=n.userId,this.defaultDismissCooldownMs=n.defaultDismissCooldownMs??B_,this.defaultRemindLaterMs=n.defaultRemindLaterMs??3600*1e3,this.hydrate();}track(n){let e=this.stateKey(n.placementId,n.userId,n.treatmentId),t=Date.now(),r=n.metadata??{},s={...this.state.get(e)??{updatedAt:new Date(t).toISOString()},lastInteractionType:n.interactionType,updatedAt:n.interactionAt??new Date(t).toISOString()};if(n.interactionType==="dismiss"){let a=Number(r.cooldown_ms);s.suppressedUntil=t+(Number.isFinite(a)&&a>0?a:this.defaultDismissCooldownMs);}if(n.interactionType==="remind_me_later"){let a=Number(r.remind_after_seconds);s.suppressedUntil=t+(Number.isFinite(a)&&a>0?a*1e3:this.defaultRemindLaterMs);}if(n.interactionType==="cta_clicked"){let a=Number(r.cooldown_ms);s.suppressedUntil=t+(Number.isFinite(a)&&a>0?a:this.defaultDismissCooldownMs);}n.interactionType==="cta_completed"&&(s.suppressedUntil=t+300*1e3),this.state.set(e,s),this.persist();}checkSuppression(n,e,t){let r=this.stateKey(n,e,t),i=this.state.get(r);return i?.suppressedUntil?i.suppressedUntil<=Date.now()?{suppressed:false}:{suppressed:true,reason:i.lastInteractionType==="remind_me_later"?"suppressed_until_remind_window":"suppressed_by_dismiss_cooldown"}:{suppressed:false}}clearSuppression(n,e,t){let r=this.stateKey(n,e,t);this.state.delete(r),this.persist();}hydrate(){let n=this.storage.getItem(this.storageKey());if(n)try{let e=JSON.parse(n);for(let[t,r]of Object.entries(e))!r||typeof r!="object"||this.state.set(t,r);}catch{this.storage.removeItem(this.storageKey());}}persist(){try{let n=Object.fromEntries(this.state.entries());this.storage.setItem(this.storageKey(),JSON.stringify(n));}catch{}}storageKey(){return `${iC}:${this.tenantId}:${this.userId}`}stateKey(n,e,t){return [this.tenantId,e,n,t||"default"].join(":")}},aC="revturbine:presentation-caps";function wo(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function oC(n){if(!wo(n))return null;let e=Number(n.count),t=typeof n.period=="string"?n.period:"";return !Number.isFinite(e)||e<=0||t!=="session"&&t!=="day"&&t!=="week"&&t!=="month"&&t!=="lifetime"?null:{count:e,period:t}}var lC=class{constructor(n){this.capsByKey=new Map,this.storage=n.storage,this.tenantId=n.tenantId,this.userId=n.userId,this.hydrate();}enforce(n){let e=this.extractPolicies(n);if(e.length===0)return {allowed:true};let t=this.capKey(n),r=Date.now(),i=this.capsByKey.get(t)??{seenAt:[]},s={...i,seenAt:i.seenAt.filter(p=>Number.isFinite(p)&&p>0)},a=zl({perPayload:{policies:e,seenAt:s.seenAt,cooldownUntil:s.cooldownUntil},now:r});if(!a.allowed)return this.capsByKey.set(t,s),{allowed:false,reason:a.reason};s.seenAt.push(r);let o=e.map(p=>p.cooldownMs).filter(p=>typeof p=="number"&&Number.isFinite(p)&&p>0);return o.length>0?s.cooldownUntil=r+Math.max(...o):delete s.cooldownUntil,this.capsByKey.set(t,s),this.persist(),{allowed:true}}hydrate(){let n=this.storage.getItem(this.storageKey());if(n)try{let e=JSON.parse(n);for(let[t,r]of Object.entries(e)){if(!r||typeof r!="object")continue;let i=Array.isArray(r.seenAt)?r.seenAt.filter(a=>Number.isFinite(a)&&a>0):[],s=Number.isFinite(r.cooldownUntil)?r.cooldownUntil:void 0;this.capsByKey.set(t,{seenAt:i,cooldownUntil:s});}}catch{this.storage.removeItem(this.storageKey());}}persist(){try{let n=Object.fromEntries(this.capsByKey.entries());this.storage.setItem(this.storageKey(),JSON.stringify(n));}catch{}}storageKey(){return `${aC}:${this.tenantId}:${this.userId}`}capKey(n){return [this.tenantId,this.userId,n.surface.type,n.output_id].join(":")}extractPolicies(n){let e=[],t=[n,n.content,wo(n.content)?n.content.payload:void 0,wo(n.content)?n.content.placement:void 0,wo(n.content)?n.content.surface:void 0];for(let r of t){if(!wo(r))continue;let i=wo(r.caps)?r.caps:void 0;if(!i)continue;let s=[],a=oC(i.max_per_period);a&&s.push(a);let o=Number(i.cooldown_days),p=Number.isFinite(o)&&o>0?o*24*60*60*1e3:void 0;e.push({rules:s,...p!==void 0?{cooldownMs:p}:{}});}return e}},gc=class{constructor(){this.store=new Map;}getItem(n){return this.store.get(n)??null}setItem(n,e){this.store.set(n,e);}removeItem(n){this.store.delete(n);}};function q_(n){return [n.tenantId,n.userId,n.placementId,n.treatmentId||"default"].join(":")}function D_(n,e=Date.now()){return n?.suppressedUntil?n.suppressedUntil<=e?{suppressed:false}:{suppressed:true,reason:n.lastInteractionType==="remind_me_later"?"suppressed_until_remind_window":"suppressed_by_dismiss_cooldown"}:{suppressed:false}}var Fp=class{constructor(n){this.retiredCache=null,this.suppressedCache=null,this.store=n.store,this.userId=n.userId,this.defaultSuppressionMs=n.defaultSuppressionMs??rC,this.defaultDismissCooldownMs=n.defaultDismissCooldownMs??B_;}async recordImpression(n,e,t,r){await this.appendRecord(n,"impressed",e,t,r);}async recordDismissal(n,e,t,r,i){let s=i??this.defaultDismissCooldownMs,a=new Date(Date.now()+s).toISOString();await this.appendRecord(n,"dismissed",e,t,{...r,suppressUntil:a}),this.suppressInCache(n,a);}async recordClickThru(n,e,t,r,i){let s=i??this.defaultDismissCooldownMs,a=new Date(Date.now()+s).toISOString();await this.appendRecord(n,"clicked_thru",e,t,{...r,suppressUntil:a}),this.suppressInCache(n,a);}async recordConversion(n,e,t,r){await this.appendRecord(n,"cta_completed",e,t,r),this.retireInCache(n);}async recordSuppression(n,e,t,r,i){let s=i??this.defaultSuppressionMs,a=new Date(Date.now()+s).toISOString();await this.appendRecord(n,"suppressed",e,t,{...r,suppressUntil:a}),this.suppressInCache(n,a);}async isRetired(n){return (await this.getRetiredIds()).has(n)}async getRetiredIds(){if(this.retiredCache)return this.retiredCache;let n=await this.store.getRetiredPlacementIds(this.userId);return this.retiredCache=n,n}isRetiredSync(n){return this.retiredCache?.has(n)??false}isSuppressedSync(n){if(!this.suppressedCache)return false;let e=this.suppressedCache.get(n);return e?new Date(e).getTime()>Date.now()?true:(this.suppressedCache.delete(n),false):false}isHiddenSync(n){return this.isRetiredSync(n)||this.isSuppressedSync(n)}async queryHistory(n){return this.store.query(this.userId,n)}async hydrate(){this.retiredCache=await this.store.getRetiredPlacementIds(this.userId),this.suppressedCache=await this.store.getSuppressedPlacements(this.userId);}async reset(){await this.store.clear(this.userId),this.retiredCache=new Set,this.suppressedCache=new Map;}setUserId(n){this.userId=n,this.retiredCache=null,this.suppressedCache=null;}async appendRecord(n,e,t,r,i){let s={placementId:n,outcome:e,occurredAt:new Date().toISOString(),...t?{payloadId:t}:{},...r?{surfaceTemplateId:r}:{},...i?{metadata:i}:{}};await this.store.append(this.userId,s);}retireInCache(n){this.retiredCache||(this.retiredCache=new Set),this.retiredCache.add(n);}suppressInCache(n,e){this.suppressedCache||(this.suppressedCache=new Map),this.suppressedCache.set(n,e);}},cC=class{constructor(){this.records=new Map;}append(n,e){let t=this.records.get(n)??[];t.push(e),this.records.set(n,t);}query(n,e){let t=this.records.get(n)??[];return e&&(t=N_(t,e)),t.slice().reverse()}getRetiredPlacementIds(n){let e=this.records.get(n)??[];return H_(e)}getSuppressedPlacements(n){let e=this.records.get(n)??[];return z_(e)}clear(n){this.records.delete(n);}},dC="revturbine:impression-history",M_=class{constructor(n){this.storage=n.storage,this.tenantId=n.tenantId,this.maxRecords=n.maxRecords??500;}append(n,e){let t=this.load(n);t.push(e),t.length>this.maxRecords&&t.splice(0,t.length-this.maxRecords),this.save(n,t);}query(n,e){let t=this.load(n);return e&&(t=N_(t,e)),t.slice().reverse()}getRetiredPlacementIds(n){let e=this.load(n);return H_(e)}getSuppressedPlacements(n){let e=this.load(n);return z_(e)}clear(n){this.storage.removeItem(this.key(n));}key(n){return `${dC}:${this.tenantId}:${n}`}load(n){let e=this.storage.getItem(this.key(n));if(!e)return [];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return []}}save(n,e){try{this.storage.setItem(this.key(n),JSON.stringify(e));}catch{}}};function N_(n,e){let t=n;if(e.placementIds&&e.placementIds.length>0){let r=new Set(e.placementIds);t=t.filter(i=>r.has(i.placementId));}if(e.outcomes&&e.outcomes.length>0){let r=new Set(e.outcomes);t=t.filter(i=>r.has(i.outcome));}if(e.since){let r=new Date(e.since).getTime();t=t.filter(i=>new Date(i.occurredAt).getTime()>=r);}return t}function H_(n){let e=new Set;for(let t of n)nC.has(t.outcome)&&e.add(t.placementId);return e}function z_(n){let e=new Map,t=Date.now();for(let r=n.length-1;r>=0;r--){let i=n[r];if(e.has(i.placementId))continue;let s=i.metadata?.suppressUntil;typeof s=="string"&&new Date(s).getTime()>t&&e.set(i.placementId,s);}return e}function K_(n){let{config:e,cacheTtlMs:t}=n,r=[];if(n.planHandle){let i={domain:"plan",cacheTtlMs:t,resolve:()=>({currentPlanHandle:n.planHandle,currentPlanName:n.planName??n.planHandle,...n.paymentFailed!==void 0?{paymentFailed:n.paymentFailed}:{},...n.paymentAtRisk!==void 0?{paymentAtRisk:n.paymentAtRisk}:{}})};r.push(i);}if(e.entitlements?.length){let i=n.defaultEntitlementPolicy??"allow",s={domain:"entitlements",cacheTtlMs:t,resolve:()=>{let a={},o={};for(let p of e.entitlements??[]){a[p.unique_handle]={status:i==="allow"?"allowed":"denied",allowed:i==="allow",reason:`static_config_default_${i}`};let v=n.usage?.[p.unique_handle];v&&(o[p.unique_handle]={used:v.used,limit:v.limit,remaining:Math.max(0,v.limit-v.used),unit:p.unit});}return {entries:a,usage:o,...n.tiers!==void 0?{tiers:n.tiers}:{}}}};r.push(s);}if(e.segments?.length){let i={domain:"segments",cacheTtlMs:t,resolve:()=>({segmentIds:(e.segments??[]).map(s=>s.handle),segmentSlugs:(e.segments??[]).map(s=>s.handle)})};r.push(i);}if(e.entitlement_rules?.length){let i={domain:"rules",cacheTtlMs:t,resolve:()=>{let s={},a=new Map;for(let p of e.entitlements??[]){let v=p;typeof v.unique_handle=="string"&&typeof v.type=="string"&&a.set(v.unique_handle,v.type);}for(let p of e.entitlement_rules??[]){let v=p.entitlement_id;s[v]||(s[v]=[]);let l=p,x=Array.isArray(l.segment_ids)?l.segment_ids.filter(S=>typeof S=="string"):typeof l.segment_id=="string"&&l.segment_id!=="all"?[l.segment_id]:[],I=Array.isArray(l.plan_ids)?l.plan_ids.filter(S=>typeof S=="string"):[],C={ruleId:p.id,entitlementId:v,planIds:(p.targets??[]).length>0?(p.targets??[]).filter(S=>S.kind==="plan").map(S=>S.id):I,segmentIds:x,kind:(()=>{let S=typeof l.type_fields=="object"&&l.type_fields!==null?l.type_fields:{};return (typeof l.kind=="string"?l.kind:void 0)??(typeof S.kind=="string"?S.kind:void 0)??a.get(v)??"feature"})(),fields:{...typeof l.type_fields=="object"&&l.type_fields!==null?l.type_fields:{},...l}};s[v].push(C);}let o={};for(let p of e.segments??[])typeof p.dimension_id=="string"&&typeof p.handle=="string"&&(o[p.handle]=p.dimension_id);return {entitlementRules:s,segmentDimensions:o,configVersion:Td(e)}}};r.push(i);}if(e.message_blocks?.length||e.personalization_tokens?.length){let i={domain:"content",cacheTtlMs:t,resolve:()=>{let s={};for(let a of e.message_blocks??[])s[a.block_id]={blockId:a.block_id,name:a.name,defaultContent:a.default_content,segmentOverrides:a.segment_overrides?.map(o=>({segmentId:o.segment_value_id,content:o.content})),status:a.status};return {messageBlocks:s,personalization:{}}}};r.push(i);}if(e.theme&&Object.keys(e.theme).length>0){let i={domain:"theme",cacheTtlMs:t,resolve:()=>({overrides:e.theme})};r.push(i);}return r}var G_=class{constructor(n){this.registeredPlacements=new Map,this.tenantId=n.tenantId,this.userId=n.userId,this.exportedConfig=n.exportedConfig;let e=n.storage??new gc;this.registry=new uu;for(let r of n.providers)this.registry.register(r);this.interactionTracker=new sC({storage:e,tenantId:n.tenantId,userId:n.userId,...n.interactionOptions}),this.capEnforcer=new lC({storage:e,tenantId:n.tenantId,userId:n.userId}),this.impressionHistory=new Fp({store:n.impressionStore??new cC,userId:n.userId});let t=n.customResolver??this.buildPlacementResolver(n);this.engine=new vg({registry:this.registry,interactionTracker:this.interactionTracker,capEnforcer:this.capEnforcer,options:n.engineOptions,placements:this.registeredPlacements,placementResolver:t});}registerPlacement(n){this.registeredPlacements.set(n.id,n);}async getPlacementDecision(n){return this.engine.evaluate(n)}async getPlacementDecisions(n){return this.engine.evaluateBatch(n)}async getPlacement(n){let e=this.slotRecordForConfig(n);return e?(this.registerPlacement(e),this.engine.evaluate({placementId:e.id,userId:this.userId})):null}async checkEntitlement(n,e){let t=await this.engine.checkEntitlement(n,e);return t.reason==="no_entitlement_provider"?this.deriveEntitlementFromConfig(n,e):t}trackInteraction(n){this.engine.trackInteraction(n);}clearSuppression(n,e){this.interactionTracker.clearSuppression(n,e??this.userId);}async resolveProviders(){return this.registry.resolveAll()}evaluateSegments(n){let e=this.exportedConfig.segments??[];return $l(e,n)}buildTargetingState(n,e){return Vd(n,this.exportedConfig,e)}async derivePersonalizationTokens(n){let e=await this.registry.resolveAll();return Cg({userId:this.userId,providers:e,base:n})}setUserId(n){this.userId=n,this.impressionHistory.setUserId(n);}getUserId(){return this.userId}getExportedConfig(){return this.exportedConfig}async hydrate(){await this.impressionHistory.hydrate();}updateProviders(n){this.registry.clear();for(let e of n)this.registry.register(e);}slotRecordForConfig(n){if(n.slotId){let r=this.registeredPlacements.get(n.slotId);if(r)return r}let t=(this.exportedConfig.placement_slots??[]).find(r=>n.slotId?r.id===n.slotId:n.surfaceType?r.surface_type===n.surfaceType:false);return t?{id:t.id,name:n.placementHandle??t.placement_handle,route:"",metadata:{surface_slot_id:t.id,surface_type:t.surface_type,surface_template_ids:t.template?[t.template]:[],...n.entitlementHandle?{entitlement_handle:n.entitlementHandle}:{},...n.fixedOnly?{fixedOnly:true}:{}}}:null}buildPlacementResolver(n){let e=n.placements??{placements:n.exportedConfig.placements??[]};return pc({placements:e,exportedConfig:n.exportedConfig,impressionHistory:this.impressionHistory})}deriveEntitlementFromConfig(n,e){return Nl({handle:n,context:e,currentPlanHandle:"",segmentIds:new Set,usageBalances:{},exportedConfig:this.exportedConfig})??{status:"allowed",allowed:true,reason:"local_runtime_default_allow"}}},uC=["web-client","server"],mC=z$1.enum(uC),pC=["method","meta","component"],fC=z$1.enum(pC),hC=["ts","python","java","csharp","rust"];z$1.enum(hC);var gC=z$1.object({ts:z$1.string().min(1).optional(),python:z$1.string().min(1).optional(),java:z$1.string().min(1).optional(),csharp:z$1.string().min(1).optional(),rust:z$1.string().min(1).optional()}).strict(),_C=z$1.object({canonical:z$1.string().min(1),aliases:z$1.array(z$1.string().min(1)),kind:fC,appliesTo:z$1.array(mC).min(1),composes:z$1.string().min(1).optional(),perLanguage:gC.optional(),description:z$1.string().min(1)}).strict().refine(n=>n.kind!=="meta"||n.composes!==void 0,{message:"kind 'meta' requires a `composes` reference",path:["composes"]}),bC=z$1.object({version:z$1.number().int().positive(),functions:z$1.array(_C).min(1)}).strict().superRefine((n,e)=>{let t=new Map;for(let r of n.functions)for(let i of [r.canonical,...r.aliases]){let s=t.get(i);s!==void 0&&e.addIssue({code:"custom",message:`duplicate SDK name "${i}" (also on "${s}")`,path:["functions"]}),t.set(i,r.canonical);}});bC.parse({version:2,functions:[{canonical:"checkEntitlement",aliases:["can"],kind:"method",appliesTo:["web-client","server"],description:"Check whether the user is entitled to a feature/handle; returns the rich EntitlementResult (allowed, status, reason, limits, enforcement)."},{canonical:"gate",aliases:[],kind:"meta",appliesTo:["web-client"],composes:"checkEntitlement",description:"Gate an action behind an entitlement: checks the handle, runs fn when allowed, otherwise returns the entitlement so the caller can surface a paywall."},{canonical:"trackEvent",aliases:["track"],kind:"method",appliesTo:["web-client"],description:"Emit a product/analytics event powering frequency caps, attribution, and experiments."},{canonical:"updateUsage",aliases:["update"],kind:"method",appliesTo:["web-client"],description:"Patch customer-reported usage balances for client-side metering display (the advertised update({ usage }) verb)."},{canonical:"resetIdentity",aliases:["reset"],kind:"method",appliesTo:["web-client"],description:"Clear the current user and revert to the anonymous identity (e.g. on sign-out)."},{canonical:"identify",aliases:[],kind:"method",appliesTo:["web-client"],description:"Associate the session with a known user id and optional traits/context."},{canonical:"getPlacement",aliases:[],kind:"method",appliesTo:["web-client","server"],description:"Resolve a single placement decision for a surface."},{canonical:"getPlacementDecision",aliases:[],kind:"method",appliesTo:["web-client"],description:"Resolve a placement decision from an explicit decision input (headless)."},{canonical:"evaluate",aliases:[],kind:"method",appliesTo:["server"],description:"Batch-evaluate placements + entitlements for a user, returning a serializable payload the client SDK can hydrate."},{canonical:"getTrialStatus",aliases:[],kind:"method",appliesTo:["server"],description:"Fetch the user's trial status for server-side gating."},{canonical:"SurfaceSlotComponent",aliases:["Slot","RTSlot"],kind:"component",appliesTo:["web-client"],description:"React slot component that renders the resolved placement; advertised as <Slot> (<RTSlot> is the deprecated prior name)."},{canonical:"AccessGateSurfaceSlot",aliases:["Gate"],kind:"component",appliesTo:["web-client"],description:"React component that gates content behind an entitlement, rendering an upsell placement when denied; advertised as <Gate>."}]});var vC=[{from:"entitlement_rules",field:"targets[].id",to:"plans",by:"unique_handle",kind:"list",onDelete:"cascade",resolution:"playbook",granularity:"entry",targetKind:"plan",note:"Entry-level; a rule losing its last target is swept whole (targets.min(1))."},{from:"entitlement_rules",field:"targets[].id",to:"addons",by:"unique_handle",kind:"list",onDelete:"cascade",resolution:"playbook",granularity:"entry",targetKind:"addon",note:"Entry-level; a rule losing its last target is swept whole (targets.min(1))."},{from:"entitlement_rules",field:"targets[].id",to:"plan_variations",by:"handle",kind:"list",onDelete:"cascade",resolution:"playbook",granularity:"entry",targetKind:"plan_variation",note:"Variation-level targeting is dead per the plan-125 audit; declared for kind-enum totality."},{from:"entitlement_rules",field:"targets[].id",to:"addon_variations",by:"handle",kind:"list",onDelete:"cascade",resolution:"playbook",granularity:"entry",targetKind:"addon_variation",note:"Variation-level targeting is dead per the plan-125 audit; declared for kind-enum totality."},{from:"plan_variations",field:"plan_handle",to:"plans",by:"unique_handle",kind:"one",onDelete:"cascade",resolution:"playbook"},{from:"addon_variations",field:"addon_handle",to:"addons",by:"unique_handle",kind:"one",onDelete:"cascade",resolution:"playbook"},{from:"plan_variations",field:"segment_handle",to:"segments",by:"handle",kind:"optional",onDelete:"restrict",resolution:"playbook",note:"Detach would silently widen variation availability \u2014 restrict pending Q-1 ratification."},{from:"addon_variations",field:"segment_handle",to:"segments",by:"handle",kind:"optional",onDelete:"restrict",resolution:"playbook",note:"Detach would silently widen variation availability \u2014 restrict pending Q-1 ratification."},{from:"free_trial_rules",field:"plan_id",to:"plans",by:"unique_handle",kind:"optional",onDelete:"restrict",resolution:"playbook",note:'null means "All plans" and never blocks.'},{from:"free_trial_rules",field:"convert_to_plan_id",to:"plans",by:"unique_handle",kind:"optional",onDelete:"restrict",resolution:"playbook"},{from:"free_trial_rules",field:"fallback_plan_id",to:"plans",by:"unique_handle",kind:"optional",onDelete:"restrict",resolution:"playbook"},{from:"reverse_trial_rules",field:"premium_plan_id",to:"plans",by:"unique_handle",kind:"one",onDelete:"restrict",resolution:"playbook"},{from:"reverse_trial_rules",field:"fallback_plan_id",to:"plans",by:"unique_handle",kind:"one",onDelete:"restrict",resolution:"playbook"},{from:"placements",field:"trigger.entitlement_handle",to:"entitlements",by:"unique_handle",kind:"optional",onDelete:"restrict",resolution:"playbook",note:"entitlement_gate / usage_threshold / credit_threshold / seat_threshold trigger variants."},{from:"placements",field:"trigger.slot_id",to:"placement_slots",by:"id",kind:"optional",onDelete:"restrict",resolution:"playbook",note:"surface_render trigger variant."},{from:"placement_payloads",field:"target.segment_chips[]",to:"segments",by:"handle",kind:"list",onDelete:"detach",resolution:"playbook",granularity:"entry",note:"Chip resolution falls back segment \u2192 plan \u2192 literal; stale chips degrade to literals."},{from:"placement_payloads",field:"target.segment_chips[]",to:"plans",by:"unique_handle",kind:"list",onDelete:"detach",resolution:"playbook",granularity:"entry",note:"Chip resolution falls back segment \u2192 plan \u2192 literal; stale chips degrade to literals."},{from:"placement_payloads",field:"surface_slot_ids[]",to:"placement_slots",by:"id",kind:"list",onDelete:"detach",resolution:"playbook",granularity:"entry"},{from:"customer_overrides",field:"plan_handle",to:"plans",by:"unique_handle",kind:"optional",onDelete:"restrict",resolution:"control_plane",note:"Grant-Plan overrides (Q-1 restrict class)."},{from:"subscriptions",field:"variation_handle",to:"plan_variations",by:"handle",kind:"optional",onDelete:"restrict",resolution:"control_plane",note:"Active-subscriber variations (Q-1 restrict class)."},{from:"subscriptions",field:"variation_handle",to:"addon_variations",by:"handle",kind:"optional",onDelete:"restrict",resolution:"control_plane",note:"Active-subscriber add-on variations (Q-1 restrict class)."}];function yC(){let n=[];for(let[e,t]of Object.entries(zm))for(let[r,i]of Object.entries(t.fields)){let s=i.reference;if(s){if(!s.onDelete)throw new Error(`cascade-graph: bundle reference ${e}.${r} \u2192 ${s.table} has no onDelete policy`);n.push({from:e,field:r,to:s.table,by:s.by,kind:s.kind,onDelete:s.onDelete,resolution:"playbook"});}}return n}function xC(n){return [...n].sort((e,t)=>e.from.localeCompare(t.from)||e.field.localeCompare(t.field)||e.to.localeCompare(t.to)||(e.targetKind??"").localeCompare(t.targetKind??""))}Object.freeze(xC([...yC(),...vC]));function Oo(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,10)}`}var mu=class extends Error{constructor(t,r){super(`RevTurbine client-session mint failed (status ${t})`);k(this,"status",t);k(this,"requestId",r);this.name="RevTurbineClientSessionError";}},_c=class{constructor(e){k(this,"tenantId");k(this,"apiKey");k(this,"endpoint");k(this,"defaultTtlSeconds");k(this,"fetchFn");this.tenantId=e.tenantId,this.apiKey=e.apiKey,this.endpoint=e.endpoint.replace(/\/$/,""),this.defaultTtlSeconds=e.defaultTtlSeconds??60,this.fetchFn=e.fetch??globalThis.fetch;}get clientSessions(){return {create:e=>this.createClientSession(e)}}async evaluate(e){let t=Oo(),r=e.anonymousId??Oo(),[i,s,a,o,p]=await Promise.all([this.evaluatePlacements(t,e),this.evaluateEntitlements(t,e),e.includeTrialStatus?this.fetchTrialStatus(t,e.userId):Promise.resolve(void 0),e.includeUserContext?this.fetchUserContext(t,e.userId):Promise.resolve(void 0),e.includeTheme?this.fetchTheme(t):Promise.resolve(void 0)]),v={version:"1.0.0",request_id:t,tenant_id:this.tenantId,evaluated_at:new Date().toISOString(),ttl_seconds:this.defaultTtlSeconds,user:{id:e.userId,anonymous_id:r,traits:e.traits},decisions:i};return s&&Object.keys(s).length>0&&(v.entitlements=s),a&&(v.trial_status=a),o&&(v.user_context=o),p&&(v.theme=p),v}async getPlacement(e,t,r){let i=Oo(),s={request_id:i,user_id:e,traits:r??{},slot_id:t.slotId,entitlement_handle:t.entitlementHandle,plan_handle:t.planHandle,placement_handle:t.placementHandle};try{let a=await this.apiCall(i,"/api/decision-api/v1/decide-context",s);if(!a.ok)return {slot_id:t.slotId,entitlement_handle:t.entitlementHandle,plan_handle:t.planHandle,placement_handle:t.placementHandle,visible:!1,reason_codes:["api_error"]};let o=await a.json(),p=o.decision,v=p?.visible??!1,l={slot_id:t.slotId,entitlement_handle:t.entitlementHandle,plan_handle:t.planHandle,placement_handle:t.placementHandle,visible:v};return v&&p&&(l.output=p),o.reason_codes&&(l.reason_codes=o.reason_codes),l}catch{return {slot_id:t.slotId,entitlement_handle:t.entitlementHandle,plan_handle:t.planHandle,placement_handle:t.placementHandle,visible:false,reason_codes:["network_error"]}}}async checkEntitlement(e,t,r){let i=Oo(),s={request_id:i,user_id:e,entitlement_handle:t,...r??{}};try{let a=await this.apiCall(i,"/api/decision-api/v1/check-entitlement",s);if(!a.ok)return {status:"denied",allowed:!1,reason:"api_error"};let o=await a.json();return {status:o.status??"denied",allowed:o.allowed??!1,reason:o.reason,current_tier:o.current_tier}}catch{return {status:"denied",allowed:false,reason:"network_error"}}}can(e,t,r){return this.checkEntitlement(e,t,r)}async getTrialStatus(e){let t=Oo();return this.fetchTrialStatus(t,e)}async createClientSession(e){let t=Oo(),r=await this.apiCall(t,"/api/sdk/client-sessions",{subject:e.subject,surface:e.surface,capabilities:e.capabilities??["context:read"]});if(!r.ok)throw new mu(r.status,t);let i=await r.json();return {client_token:i.client_token,expires_at:i.expires_at}}async apiCall(e,t,r){return this.fetchFn(`${this.endpoint}${t}`,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${this.apiKey}`,"x-tenant-id":this.tenantId,"x-request-id":e},body:JSON.stringify(r)})}async apiGet(e,t){return this.fetchFn(`${this.endpoint}${t}`,{method:"GET",headers:{authorization:`Bearer ${this.apiKey}`,"x-tenant-id":this.tenantId,"x-request-id":e}})}async evaluatePlacements(e,t){let r=t.placements??[];return r.length===0?[]:r.length>1?this.evaluatePlacementsBatch(e,t,r):[await this.getPlacement(t.userId,r[0],t.traits)]}async evaluatePlacementsBatch(e,t,r){let i={request_id:e,user_id:t.userId,traits:t.traits??{},usage_balances:t.usageBalances??{},page:t.page??{},placements:r.map(s=>({slot_id:s.slotId,entitlement_handle:s.entitlementHandle,plan_handle:s.planHandle,placement_handle:s.placementHandle}))};try{let s=await this.apiCall(e,"/api/decision-api/v1/bootstrap-context",i);return s.ok?(await s.json()).decisions.map((o,p)=>{let v=r[p]??{},l=o.result.decision?.visible??!1,x={slot_id:v.slotId,entitlement_handle:v.entitlementHandle,plan_handle:v.planHandle,placement_handle:v.placementHandle,visible:l};return l&&o.result.decision&&(x.output=o.result.decision),o.result.reason_codes&&(x.reason_codes=o.result.reason_codes),x}):r.map(o=>({slot_id:o.slotId,entitlement_handle:o.entitlementHandle,plan_handle:o.planHandle,placement_handle:o.placementHandle,visible:!1,reason_codes:["api_error"]}))}catch{return r.map(s=>({slot_id:s.slotId,entitlement_handle:s.entitlementHandle,plan_handle:s.planHandle,placement_handle:s.placementHandle,visible:false,reason_codes:["network_error"]}))}}async evaluateEntitlements(e,t){let r=t.entitlementHandles??[];if(r.length===0)return;let i={},s=await Promise.allSettled(r.map(async a=>{let o=await this.checkEntitlement(t.userId,a);return {handle:a,result:o}}));for(let a of s)a.status==="fulfilled"&&(i[a.value.handle]=a.value.result);return i}async fetchTrialStatus(e,t){try{let r=await this.apiCall(e,"/api/decision-api/v1/trial-status",{request_id:e,user_id:t});if(!r.ok)return {in_trial:!1};let i=await r.json();return {in_trial:i.in_trial??!1,...i.trial_type!==void 0?{trial_type:i.trial_type}:{},...i.plan_handle!==void 0?{plan_handle:i.plan_handle}:{},...i.trial_limit_type!==void 0?{trial_limit_type:i.trial_limit_type}:{},...i.progress_percent!==void 0?{progress_percent:i.progress_percent}:{},...i.day_number!==void 0?{day_number:i.day_number}:{},...i.days_remaining!==void 0?{days_remaining:i.days_remaining}:{},...i.usage_entitlement_handle!==void 0?{usage_entitlement_handle:i.usage_entitlement_handle}:{},...i.usage_consumed!==void 0?{usage_consumed:i.usage_consumed}:{},...i.usage_remaining!==void 0?{usage_remaining:i.usage_remaining}:{},...i.usage_limit!==void 0?{usage_limit:i.usage_limit}:{}}}catch{return {in_trial:false}}}async fetchUserContext(e,t){try{let r=await this.apiCall(e,"/api/decision-api/v1/user-context",{request_id:e,user_id:t});if(!r.ok)return;let i=await r.json();return {segments:i.segments,traits:i.traits,usage_balances:i.usage_balances}}catch{return}}async fetchTheme(e){try{let t=await this.apiGet(e,"/api/sdk/theme");if(!t.ok)return;let r=await t.json();return typeof r!="object"||r===null?void 0:r}catch{return}}};var IC=/^[a-z0-9._]{1,100}$/,aa={Persisted:"persisted",Transient:"transient"},os={Internal:"internal",External:"external"},Di={Financial:{"x-revturbine-data-classification":"financial"},Unrestricted:{"x-revturbine-data-classification":"unrestricted"},Operational:{"x-revturbine-data-classification":"operational"}},PC="readOnly";function ni(n){let e={};for(let[t,r]of Object.entries(n.shape)){if(typeof r!="object"||r===null)continue;r.meta()?.[PC]===true||(e[t]=r);}return z$1.object(e)}function kr(n){let e=ni(n),t=e.shape.handle;return t&&typeof t.regex=="function"?e.extend({handle:t.regex(IC)}):e}var {Unrestricted:Nr}=Di,{Transient:Hr,Persisted:CC}=aa,{Internal:La,External:As}=os;z$1.object({page:z$1.coerce.number().int().min(1).default(1).meta(Nr),per_page:z$1.coerce.number().int().min(1).max(100).default(25).meta(Nr)}).meta({id:"PaginationParams","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":As});var En=z$1.object({created_at:z$1.string().datetime().meta({...Nr,readOnly:true}),updated_at:z$1.string().datetime().meta({...Nr,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":As}),vn=z$1.object({id:z$1.string().min(1).meta({...Nr,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":As}),wn=z$1.object({tenant_id:z$1.string().min(1,"tenant_id is required").meta({...Nr,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":La});z$1.enum(["monthly","annual","quarterly","one_time","usage_based"]).meta({id:"BillingCadence","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":As});var Vp=z$1.enum(["banner","modal","tooltip","sidebar","inline","toast","fullscreen","email","sms","push","in_page","button","full_page","agent","cli","custom"]).meta({id:"SurfaceType","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":As}),Z_=["allowed","limited","denied"];z$1.enum(["presented","clicked","converted","dismissed","reminded","suppressed"]).meta({id:"PresentationOutcome","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":As});var pu=z$1.enum(["feature","capability_tier","usage_limit","price_per_unit","rate_limit","credits","seat"]).meta({id:"EntitlementType","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":As}),Y_=z$1.enum(["usd","eur","gbp"]).default("usd").meta({id:"Currency","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":As});z$1.union([z$1.boolean(),z$1.number(),z$1.string()]).meta({id:"FeatureFlagValue","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":La});var js=z$1.string().min(1).max(200),er=z$1.string().min(1).max(100),fu=z$1.string().max(500).optional(),fi=z$1.record(z$1.string(),z$1.unknown()).default({}),Va=z$1.number().int().min(10).max(100).multipleOf(10),hu=z$1.string().datetime().nullable().default(null),Wn=z$1.object({environment_id:z$1.string().min(1).default("production").meta({...Nr,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":La}),tr=z$1.object({playbook_version_id:z$1.string().nullable().default(null).meta(Nr),is_current:z$1.boolean().default(true).meta({...Nr,readOnly:true}),is_deleted:z$1.boolean().default(false).meta({...Nr,readOnly:true}),delete_date:z$1.string().datetime().nullable().default(null).meta({...Nr,readOnly:true}),sequence:z$1.number().int().min(1).default(1).meta({...Nr,readOnly:true}),base_sequence:z$1.number().int().nullable().default(null).meta({...Nr,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":La}),kC=vn.merge(En).merge(wn).merge(Wn).extend({handle:er.meta({...Nr,readOnly:true}),active:z$1.boolean().default(true).meta({...Nr,readOnly:true})});function Rr(n){return kC.meta({id:n,"x-revturbine-schema-persistence":CC,"x-revturbine-schema-exposure":La})}z$1.enum(["info","warning","critical"]).meta({id:"Severity","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":La});z$1.enum(["button","plans_page_ctas","plans_page_full","inline_gate_message","tooltip","in_page_card","usage_counter","credit_counter","trial_counter","banner","modal_optional","modal_blocking","toast","email","sms","push","cli","agent_connector","custom_in_app"]).meta({id:"StudioSurfaceType","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":La});var W_=z$1.enum(["open_checkout","view_plans","book_demo","contact_sales","complete_onboarding","invite_teammate","refer_friend","verify_work_email","update_payment_method","enable_auto_renewal","manage_subscription","switch_billing_period","extend_trial","open_rt_placement","dismiss","snooze","custom"]).meta({id:"CtaActionType","x-revturbine-schema-persistence":Hr,"x-revturbine-schema-exposure":As});new Set(Vp.options);var X_=z$1.enum(["session","day","week","month"]),J_=z$1.object({kind:z$1.enum(["template","slot"]),id:z$1.string(),label:z$1.string().optional()});z$1.object({id:z$1.string(),group:z$1.array(J_),cap:z$1.object({count:z$1.number().int().min(1),period:X_})});var KC="__self__",GC={steps:[{kind:"segment",table:"segments",by:"handle"},{kind:"plan",table:"plans",by:"unique_handle"},{kind:"literal"}]},nb={plans:{sortKey:"unique_handle",indexBy:["unique_handle"],fields:{unique_handle:{},name:{},tier_position:{},sort_order:{},visibility:{}}},entitlements:{sortKey:"unique_handle",indexBy:["unique_handle"],fields:{unique_handle:{},name:{},type:{},unit:{},tier_definitions:{}}},entitlement_rules:{sortKey:"id",fields:{id:{},entitlement_id:{reference:{table:"entitlements",by:"unique_handle",kind:"one",onDelete:"cascade"}},targets:{},segment_ids:{reference:{table:"segments",by:"handle",kind:"list",onDelete:"restrict"}},kind:{include:"never"},unit:{include:"never"},tier_name:{include:"never"},tier_description:{include:"never"},enabled:{},limit_value:{},enforcement:{},tier_value:{},period_scope:{},included_count:{},seat_type_id:{},initial_grant:{},allowance_value:{},rollover_enabled:{},max_balance:{},reset_period:{},max_seats:{},rate_value:{},amount_cents:{},currency:{},current_usage:{include:"never"},allocation:{}}},segments:{sortKey:"handle",indexBy:["handle"],fields:{name:{},handle:{},predicates:{},dimension_id:{},experiment_id:{}}},placement_slots:{sortKey:"id",indexBy:["id","placement_handle"],fields:{id:{},label:{},description:{},surface_type:{},placement_handle:{},template:{}}},slot_configs:{sortKey:"slot_id",fields:{slot_id:{reference:{table:"placement_slots",by:"id",kind:"one",onDelete:"cascade"}},active:{},triggers:{}}},surface_templates:{sortKey:"id",indexBy:["id"],fields:{id:{},surface_type:{},fields:{}}},placements:{sortKey:"id",indexBy:["id"],fields:{id:{},name:{},category:{},trigger:{discriminator:{keyed_on:{table:KC,via:"__self__",field:"trigger.type"},variants:{surface_render:["type","slot_id"],entitlement_gate:["type","entitlement_handle","tier_threshold"],usage_threshold:["type","entitlement_handle","threshold_percent"],credit_threshold:["type","entitlement_handle","threshold_percent"],seat_threshold:["type","entitlement_handle","threshold_percent"],trial_started:["type","trial_type"],trial_progress:["type","progress_percent"],trial_ending:["type","days_before_end"],trial_ended:["type"],trial_converted:["type"],qualifier:["type","qualifier"]}}},payloads:{},order:{}}},placement_payloads:{sortKey:"payload_id",fields:{payload_id:{},placement_id:{reference:{table:"placements",by:"id",kind:"one",onDelete:"cascade"}},target:{chipResolution:GC},caps:{},created_at:{},updated_at:{},source_mode:{},surfaces:{},content_link:{},surface_slot_ids:{},remind_later_minutes:{}}},content_ui_paths:{sortKey:"name",fields:{name:{},action_type:{},plan_handle:{reference:{table:"plans",by:"unique_handle",kind:"optional",onDelete:"detach"}},promotion_id:{reference:{table:"content_promotions",by:"id",kind:"optional",onDelete:"detach"}},placement_handle:{reference:{table:"placement_slots",by:"placement_handle",kind:"optional",onDelete:"detach"}},url:{},tour_id:{},target_billing_period:{},description:{}}},content_promotions:{sortKey:"id",indexBy:["id"],fields:{id:{},name:{},discount:{},type:{},status:{}}},personalization_tokens:{sortKey:"token",indexBy:["token"],fields:{token:{},label:{},description:{},category:{},data_source:{},example_value:{},value_map:{},format:{}}},message_blocks:{sortKey:"block_id",indexBy:["block_id"],fields:{block_id:{},tenant_id:{},name:{},surface_template_id:{reference:{table:"surface_templates",by:"id",kind:"optional",onDelete:"detach"}},default_content:{},segment_overrides:{},child_blocks:{},tokens_used:{},status:{},created_at:{},updated_at:{}}}};z$1.object({target_plan_ids:z$1.array(z$1.string()).default([]),target_billing_periods:z$1.array(z$1.string()).default([]),category:z$1.string().optional()});var sb={Named:"named",Minted:"minted"},ab="x-revturbine-schema-identity";function cs(n="handle"){return {[ab]:{kind:sb.Named,handleField:n}}}function Ni(n="handle"){return {[ab]:{kind:sb.Minted,handleField:n}}}var mn={Playbook:"playbook",Branding:"branding",Billing:"billing",Metering:"metering",CustomerOperations:"customer_operations",EventIngestion:"event_ingestion"},Mi={Customer:"customer",Stripe:"stripe",CodeConstant:"code-constant",Runtime:"runtime"},YC="x-revturbine-context",WC="x-revturbine-in-config",XC="x-revturbine-sdk-input",JC="x-revturbine-source",QC="x-revturbine-deprecation",ek={[mn.Playbook]:Mi.Customer,[mn.Branding]:Mi.Customer,[mn.Billing]:Mi.Stripe,[mn.Metering]:Mi.Customer,[mn.CustomerOperations]:Mi.Runtime,[mn.EventIngestion]:Mi.Runtime};function Nn(n,e){return {[YC]:n,[WC]:e.inConfig??n===mn.Playbook,[XC]:e.sdkInput,[JC]:e.source??ek[n]}}function Up(n){return {deprecated:true,[QC]:{since:n.since,replacement:n.replacement,remove_after:n.removeAfter,reason:n.reason}}}var Xt=n=>z$1.object({items:z$1.array(n)}),Xn=z$1.object({error:z$1.string(),code:z$1.string(),request_id:z$1.string()}),E=n=>n,Jt=z$1.object({page:z$1.number().int().min(1).default(1).optional(),per_page:z$1.number().int().min(1).max(100).default(25).optional(),sort:z$1.string().optional(),order:z$1.enum(["asc","desc"]).default("asc").optional(),include_deleted:z$1.boolean().default(false).optional()}),{Unrestricted:fe}=Di,{Persisted:Kp,Transient:ri}=aa,{Internal:ob,External:zr}=os,lb=Nn(mn.Playbook,{sdkInput:true}),tk=Nn(mn.Playbook,{inConfig:false,sdkInput:false}),cb=z$1.enum(["per_month","per_year","per_billing_period","lifetime","concurrent","per_instance","per_second","per_minute","per_hour","per_6_hours","per_day","per_week"]).meta({id:"UsagePeriodScope","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr}),bu=z$1.enum(["account_pool","per_instance","per_user","per_user_pooled"]).meta({id:"UsageAllocation","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr}),nk=z$1.enum(Z_).meta({id:"EntitlementGrantStatus","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr}),rk=z$1.enum(["rule","user_context","override"]).meta({id:"EntitlementGrantSource","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr}),db=z$1.enum(["hard_block","soft_block","degrade","allow_overage"]).meta({id:"EnforcementMode","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr}),Bp=z$1.object({entitlement_id:z$1.string().min(1).meta(fe),entitlement_handle:z$1.string().min(1).meta(fe),status:nk.meta(fe),limit:z$1.number().optional().meta(fe),used:z$1.number().optional().meta(fe),allocation:bu.optional().meta(fe),enforcement:db.optional().meta(fe),source:rk.optional().meta(fe),plan_id:z$1.string().optional().meta(fe),segment_id:z$1.string().optional().meta(fe),seat_type_id:z$1.string().optional().meta(fe),rule_id:z$1.string().optional().meta(fe)}).meta({id:"EntitlementGrant","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr,...Di.Operational});z$1.object({account:z$1.record(z$1.string(),Bp).optional().meta(fe),instance:z$1.record(z$1.string(),Bp).optional().meta(fe),user:z$1.record(z$1.string(),Bp).optional().meta(fe)}).meta({id:"EntitlementGrantSet","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr,...Di.Operational});var ik=z$1.enum(["public","non_public"]).meta({id:"RuleVisibility","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr}),sk=z$1.enum(["plan","plan_variation","addon","addon_variation"]).meta({id:"EntitlementRuleTargetKind","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr}),ub=z$1.object({kind:sk.meta(fe),id:z$1.string().min(1).meta(fe)}).meta({id:"EntitlementRuleTarget","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr}),ak=z$1.enum(["month","day","week","quarter","year","billing_period","hour","six_hours"]).meta({id:"EntitlementRulePeriodUnit","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr}),Uo=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...fe,readOnly:true}),name:js.meta(fe),handle:er.meta(fe),customer_facing_description:z$1.string().max(500).optional().meta(fe),type:pu.meta(fe),unit:z$1.string().max(100).optional().meta(fe),period_scope:cb.optional().meta(fe),allocation:bu.optional().meta(fe),tier_definitions:z$1.array(z$1.object({name:z$1.string(),handle:z$1.string(),description:z$1.string().optional()})).optional().meta(fe),sort_order:z$1.number().int().default(0).meta(fe),metadata:fi.meta(fe)}).meta({id:"Entitlement","x-revturbine-schema-persistence":Kp,"x-revturbine-schema-exposure":zr,...lb,...cs()}),ok=Rr("EntitlementAnchor"),zo=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...fe,readOnly:true}),handle:er.meta({...fe,readOnly:true}),entitlement_id:z$1.string().min(1).meta(fe),targets:z$1.array(ub).min(1).meta(fe),segment_ids:z$1.array(z$1.string()).default([]).meta(fe),visibility:ik.default("public").meta(fe),period_scope:cb.optional().meta(fe),instance:z$1.string().max(100).optional().meta(fe),reset_period:ak.optional().meta(fe),limit_value:z$1.union([z$1.number(),z$1.literal("unlimited")]).optional().meta(fe),enforcement:db.optional().meta(fe),warning_threshold_percent:Va.optional().meta(fe),overage_price_ref:z$1.string().optional().meta(fe),grace_period_hours:z$1.number().int().min(0).optional().meta(fe),tier_value:z$1.string().optional().meta(fe),rate_value:z$1.number().optional().meta(fe),initial_grant:z$1.number().optional().meta(fe),allowance_value:z$1.union([z$1.number(),z$1.literal("unlimited")]).optional().meta(fe),rollover_enabled:z$1.boolean().optional().meta(fe),max_balance:z$1.union([z$1.number(),z$1.literal("unlimited")]).nullable().default(null).meta(fe),seat_type_id:z$1.string().optional().meta(fe),included_count:z$1.union([z$1.number().int(),z$1.literal("unlimited")]).optional().meta(fe),at_limit_behavior:z$1.enum(["hard_cap","auto_upgrade_at_renewal"]).optional().meta(fe),stripe_metered_price_id:z$1.string().optional().meta(fe),enabled:z$1.boolean().optional().meta(fe),allocation:bu.optional().meta(fe),max_seats:z$1.union([z$1.number(),z$1.literal("unlimited")]).nullable().optional().meta(fe),amount_cents:z$1.number().int().optional().meta(fe),currency:z$1.string().optional().meta(fe)}).meta({id:"EntitlementRule","x-revturbine-schema-persistence":Kp,"x-revturbine-schema-exposure":ob,...lb,...Ni()}),lk=Rr("EntitlementRuleAnchor");zo.superRefine((n,e)=>{n.reset_period==="billing_period"&&n.targets.findIndex(s=>s.kind!=="plan_variation"&&s.kind!=="addon_variation")!==-1&&e.addIssue({code:"custom",path:["reset_period"],params:{code:"billing_period_target_mismatch"},message:"reset_period='billing_period' requires all targets to be plan_variation or addon_variation"});let t=n.allowance_value;(t==="unlimited"||typeof t=="number"&&t>0)&&n.reset_period==null&&e.addIssue({code:"custom",path:["reset_period"],params:{code:"allowance_requires_reset_period"},message:"a non-zero credits allowance_value requires a reset_period (the per-period refill cadence)"});});var ck=z$1.enum(["one_time_period_mismatch"]).meta({id:"EntitlementRuleWarningCode","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr}),dk=z$1.object({code:ck.meta(fe),message:z$1.string().min(1).meta(fe),path:z$1.array(z$1.union([z$1.string(),z$1.number().int()])).optional().meta(fe)}).meta({id:"EntitlementRuleWarning","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr}),qp=zo.extend({warnings:z$1.array(dk).optional().meta(fe)}).meta({id:"EntitlementRuleWriteResponse","x-revturbine-schema-persistence":ri,"x-revturbine-schema-exposure":zr}),Dp=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({handle:er.meta({...fe,readOnly:true}),rule_id:z$1.string().min(1).meta(fe),experiment_id:z$1.string().min(1).meta(fe),variant_name:z$1.string().min(1).max(200).meta(fe),is_control:z$1.boolean().default(false).meta(fe),override_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(fe)}).meta({id:"EntitlementRuleVariant","x-revturbine-schema-persistence":Kp,"x-revturbine-schema-exposure":ob,...tk,...Ni()}),uk=ni(Uo),mk=ni(zo);({"/api/entitlement-anchors":{get:E({operationId:"listEntitlementAnchors",requestParams:{query:Jt},summary:"List entitlement anchors (identity registry)",tags:["entitlements"],responses:{200:{description:"Entitlement anchor list",content:{"application/json":{schema:Xt(ok)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"entitlement-anchors",persistence:{table:"entitlements",mode:"list"}}})},"/api/entitlement-rule-anchors":{get:E({operationId:"listEntitlementRuleAnchors",requestParams:{query:Jt},summary:"List entitlement rule anchors (identity registry)",tags:["entitlements"],responses:{200:{description:"Entitlement rule anchor list",content:{"application/json":{schema:Xt(lk)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"entitlement-rule-anchors",persistence:{table:"entitlementRules",mode:"list"}}})},"/api/entitlements":{get:E({operationId:"listEntitlements",requestParams:{query:Jt},summary:"List entitlements",tags:["entitlements"],responses:{200:{description:"Entitlement list",content:{"application/json":{schema:Xt(Uo)}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"list"}}}),post:E({operationId:"createEntitlement",summary:"Create entitlement",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:kr(Uo)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Uo}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"create"}}})},"/api/entitlements/{entitlementId}":{get:E({operationId:"getEntitlement",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Get entitlement",tags:["entitlements"],responses:{200:{description:"Entitlement detail",content:{"application/json":{schema:Uo}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"get"}}}),patch:E({operationId:"updateEntitlement",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Update entitlement",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:uk}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Uo}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"update"}}}),delete:E({operationId:"deleteEntitlement",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Delete entitlement",tags:["entitlements"],responses:{204:{description:"Deleted"},default:{description:"Error",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"delete"}}})},"/api/entitlements/{entitlementId}/rules":{get:E({operationId:"listEntitlementRules",requestParams:{path:z$1.object({entitlementId:z$1.string()}),query:Jt},summary:"List rules for entitlement",tags:["entitlements"],responses:{200:{description:"Rule list",content:{"application/json":{schema:Xt(zo)}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"list"}}}),post:E({operationId:"createEntitlementRule",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Create entitlement rule",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:kr(zo)}}},responses:{201:{description:"Created",content:{"application/json":{schema:qp}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"create"}}})},"/api/entitlement-rules/{ruleId}":{patch:E({operationId:"updateEntitlementRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Update entitlement rule",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:mk}}},responses:{200:{description:"Updated",content:{"application/json":{schema:qp}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"update"}}}),delete:E({operationId:"deleteEntitlementRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Delete entitlement rule",tags:["entitlements"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"delete"}}})},"/api/entitlement-rules/{ruleId}/duplicate":{post:E({operationId:"duplicateEntitlementRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Duplicate entitlement rule",tags:["entitlements"],responses:{201:{description:"Duplicated",content:{"application/json":{schema:qp}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"duplicate"}}})},"/api/entitlement-rules/{ruleId}/variants":{get:E({operationId:"listEntitlementRuleVariants",requestParams:{path:z$1.object({ruleId:z$1.string()}),query:Jt},summary:"List A/B variants for rule",tags:["entitlements"],responses:{200:{description:"Variant list",content:{"application/json":{schema:Xt(Dp)}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rule-variants",persistence:{table:"entitlementRuleVariants",mode:"list"}}}),post:E({operationId:"createEntitlementRuleVariant",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Create rule A/B variant",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:kr(Dp)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Dp}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rule-variants",persistence:{table:"entitlementRuleVariants",mode:"create"}}})}});var {Unrestricted:Ge}=Di,{Persisted:Ic,Transient:Pc}=aa,{Internal:ds}=os,mb=Nn(mn.Playbook,{sdkInput:true}),pb=Nn(mn.Playbook,{inConfig:false,sdkInput:true}),pk=z$1.enum(["not_started","active","expired","converted","cancelled"]).meta({id:"TrialStatus","x-revturbine-schema-persistence":Pc,"x-revturbine-schema-exposure":ds}),Gp=z$1.enum(["time","usage"]).meta({id:"TrialLimitType","x-revturbine-schema-persistence":Pc,"x-revturbine-schema-exposure":ds}),fb=z$1.object({name:js.meta(Ge),handle:er.meta(Ge),plan_id:z$1.string().nullable().optional().meta(Ge),segment_id:z$1.string().nullable().optional().meta(Ge),trial_limit_type:Gp.default("time").meta(Ge),duration_days:z$1.number().int().min(1).max(365).nullable().optional().meta(Ge),grace_period_days:z$1.number().int().min(0).default(0).meta(Ge),usage_entitlement_handle:z$1.string().min(1).optional().meta(Ge),usage_limit_value:z$1.number().int().min(1).optional().meta(Ge),require_payment_method:z$1.boolean().default(false).meta(Ge),auto_convert:z$1.boolean().default(true).meta(Ge),convert_to_plan_id:z$1.string().optional().meta(Ge),fallback_plan_id:z$1.string().optional().meta(Ge),limit_per_customer:z$1.number().int().min(1).default(1).meta(Ge),is_active:z$1.boolean().default(true).meta(Ge),metadata:fi.meta(Ge)}),jo=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...Ge,readOnly:true})}).merge(fb).meta({id:"FreeTrialRule","x-revturbine-schema-persistence":Ic,"x-revturbine-schema-exposure":ds,...mb,...cs()}),fk=Rr("FreeTrialRuleAnchor"),hk=z$1.enum(["signup","first_premium_access","manual"]).meta({id:"ReverseTrialStartPolicy","x-revturbine-schema-persistence":Pc,"x-revturbine-schema-exposure":ds}),hb=z$1.object({name:js.meta(Ge),handle:er.meta(Ge),premium_plan_id:z$1.string().min(1).meta(Ge),fallback_plan_id:z$1.string().min(1).meta(Ge),segment_id:z$1.string().nullable().optional().meta(Ge),trial_limit_type:Gp.default("time").meta(Ge),duration_days:z$1.number().int().min(1).max(365).nullable().optional().meta(Ge),usage_entitlement_handle:z$1.string().min(1).optional().meta(Ge),usage_limit_value:z$1.number().int().min(1).optional().meta(Ge),start_policy:hk.default("signup").meta(Ge),show_upgrade_prompt_at_day:z$1.number().int().min(0).optional().meta(Ge),entitlements_during_trial:z$1.array(z$1.string()).default([]).meta(Ge),is_active:z$1.boolean().default(true).meta(Ge),metadata:fi.meta(Ge)}),Fo=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...Ge,readOnly:true})}).merge(hb).meta({id:"ReverseTrialRule","x-revturbine-schema-persistence":Ic,"x-revturbine-schema-exposure":ds,...mb,...cs()}),gk=Rr("ReverseTrialRuleAnchor"),gb=z$1.enum(["1_per_lifetime","1_per_plan","1_per_year","unlimited"]).meta({id:"TrialLimitPolicy","x-revturbine-schema-persistence":Pc,"x-revturbine-schema-exposure":ds}),_b=z$1.enum(["per_customer","per_email_domain"]).meta({id:"TrialEligibilityScope","x-revturbine-schema-persistence":Pc,"x-revturbine-schema-exposure":ds}),Lo=vn.merge(En).merge(wn).extend({trial_limit_policy:gb.default("1_per_lifetime").meta(Ge),eligibility_scope:_b.default("per_customer").meta(Ge)}).meta({id:"FreeTrialSettings","x-revturbine-schema-persistence":Ic,"x-revturbine-schema-exposure":ds,...pb}),Vo=vn.merge(En).merge(wn).extend({trial_limit_policy:gb.default("1_per_lifetime").meta(Ge),eligibility_scope:_b.default("per_customer").meta(Ge)}).meta({id:"ReverseTrialSettings","x-revturbine-schema-persistence":Ic,"x-revturbine-schema-exposure":ds,...pb}),gu=vn.merge(En).merge(wn).extend({customer_id:z$1.string().min(1).meta(Ge),rule_id:z$1.string().min(1).meta(Ge),rule_type:z$1.enum(["free_trial","reverse_trial"]).meta(Ge),plan_id:z$1.string().min(1).meta(Ge),status:pk.default("active").meta(Ge),started_at:z$1.string().datetime().meta({...Ge,readOnly:true}),expires_at:z$1.string().datetime().nullable().optional().meta(Ge),trial_limit_type:Gp.default("time").meta(Ge),usage_entitlement_handle:z$1.string().min(1).optional().meta(Ge),usage_limit_value:z$1.number().int().min(1).optional().meta(Ge),converted_at:hu.meta(Ge),cancelled_at:hu.meta(Ge),metadata:fi.meta(Ge)}).meta({id:"TrialInstance","x-revturbine-schema-persistence":Ic,"x-revturbine-schema-exposure":ds});({"/api/free-trial-rule-anchors":{get:E({operationId:"listFreeTrialRuleAnchors",requestParams:{query:Jt},summary:"List free trial rule anchors (identity registry)",tags:["trials"],responses:{200:{description:"Free trial rule anchor list",content:{"application/json":{schema:Xt(fk)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-rule-anchors",persistence:{table:"freeTrialRules",mode:"list"}}})},"/api/trials/free-rules":{get:E({operationId:"listFreeTrialRules",requestParams:{query:Jt},summary:"List free trial rules",tags:["trials"],responses:{200:{description:"Free trial rule list",content:{"application/json":{schema:Xt(jo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"list"}}})},"/api/trials/free-rules/{ruleId}":{get:E({operationId:"getFreeTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Get free trial rule",tags:["trials"],responses:{200:{description:"Free trial rule",content:{"application/json":{schema:jo}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"get"}}}),patch:E({operationId:"updateFreeTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Update free trial rule",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:jo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:jo}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"update"}}}),delete:E({operationId:"deleteFreeTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Delete free trial rule",tags:["trials"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"delete"}}})},"/api/reverse-trial-rule-anchors":{get:E({operationId:"listReverseTrialRuleAnchors",requestParams:{query:Jt},summary:"List reverse trial rule anchors (identity registry)",tags:["trials"],responses:{200:{description:"Reverse trial rule anchor list",content:{"application/json":{schema:Xt(gk)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rule-anchors",persistence:{table:"reverseTrialRules",mode:"list"}}})},"/api/trials/reverse-rules":{get:E({operationId:"listReverseTrialRules",requestParams:{query:Jt},summary:"List reverse trial rules",tags:["trials"],responses:{200:{description:"Reverse trial rule list",content:{"application/json":{schema:Xt(Fo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"list"}}})},"/api/trials/reverse-rules/{ruleId}":{get:E({operationId:"getReverseTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Get reverse trial rule",tags:["trials"],responses:{200:{description:"Reverse trial rule",content:{"application/json":{schema:Fo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"get"}}}),patch:E({operationId:"updateReverseTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Update reverse trial rule",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:Fo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Fo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"update"}}}),delete:E({operationId:"deleteReverseTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Delete reverse trial rule",tags:["trials"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"delete"}}})},"/api/trials/free-settings":{get:E({operationId:"listFreeTrialSettings",requestParams:{query:Jt},summary:"List free trial settings (one row per tenant)",tags:["trials"],responses:{200:{description:"Free trial settings list",content:{"application/json":{schema:Xt(Lo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-settings",persistence:{table:"freeTrialSettings",mode:"list"}}})},"/api/trials/free-settings/{settingsId}":{get:E({operationId:"getFreeTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Get free trial settings",tags:["trials"],responses:{200:{description:"Free trial settings",content:{"application/json":{schema:Lo}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-settings",persistence:{table:"freeTrialSettings",mode:"get"}}}),patch:E({operationId:"updateFreeTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Update free trial settings",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:Lo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Lo}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-settings",persistence:{table:"freeTrialSettings",mode:"update"}}})},"/api/trials/reverse-settings":{get:E({operationId:"listReverseTrialSettings",requestParams:{query:Jt},summary:"List reverse trial settings (one row per tenant)",tags:["trials"],responses:{200:{description:"Reverse trial settings list",content:{"application/json":{schema:Xt(Vo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-settings",persistence:{table:"reverseTrialSettings",mode:"list"}}})},"/api/trials/reverse-settings/{settingsId}":{get:E({operationId:"getReverseTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Get reverse trial settings",tags:["trials"],responses:{200:{description:"Reverse trial settings",content:{"application/json":{schema:Vo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-settings",persistence:{table:"reverseTrialSettings",mode:"get"}}}),patch:E({operationId:"updateReverseTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Update reverse trial settings",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:Vo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Vo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-settings",persistence:{table:"reverseTrialSettings",mode:"update"}}})},"/api/trials/instances":{get:E({operationId:"listTrialInstances",requestParams:{query:Jt},summary:"List trial instances",tags:["trials"],responses:{200:{description:"Trial instance list",content:{"application/json":{schema:Xt(gu)}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"list"}}})},"/api/trials/instances/{instanceId}":{get:E({operationId:"getTrialInstance",requestParams:{path:z$1.object({instanceId:z$1.string()})},summary:"Get trial instance",tags:["trials"],responses:{200:{description:"Trial instance",content:{"application/json":{schema:gu}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"get"}}})},"/api/trials/instances/{instanceId}/cancel":{post:E({operationId:"cancelTrialInstance",requestParams:{path:z$1.object({instanceId:z$1.string()})},summary:"Cancel an active trial",tags:["trials"],responses:{200:{description:"Cancelled",content:{"application/json":{schema:gu}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"update"}}})},"/api/trials/instances/{instanceId}/convert":{post:E({operationId:"convertTrialInstance",requestParams:{path:z$1.object({instanceId:z$1.string()})},summary:"Convert trial to paid subscription",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({plan_id:z$1.string().optional()})}}},responses:{200:{description:"Converted",content:{"application/json":{schema:gu}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"update"}}})}});var {Unrestricted:Nt,Financial:_u}=Di,{Persisted:Tc,Transient:vu}=aa,{External:Fs}=os,_k=Nn(mn.Playbook,{sdkInput:true}),bk=Nn(mn.Playbook,{sdkInput:false}),$p=Nn(mn.Billing,{sdkInput:false}),la=z$1.enum(["public","unlisted","legacy"]).meta({id:"PlanVisibility","x-revturbine-schema-persistence":vu,"x-revturbine-schema-exposure":Fs}),Cc=z$1.enum(["flat","per_unit","tiered","metered"]).meta({id:"PricingModel","x-revturbine-schema-persistence":vu,"x-revturbine-schema-exposure":Fs}),yu=z$1.enum(["stripe","static"]).meta({id:"PriceSource","x-revturbine-schema-persistence":vu,"x-revturbine-schema-exposure":Fs}),Bo=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...Nt,readOnly:true}),name:js.meta(Nt),handle:er.meta(Nt),tier_position:z$1.number().int().min(0).default(0).meta(Nt),sort_order:z$1.number().int().default(0).meta(Nt),visibility:la.default("public").meta(Nt),metadata:fi.meta(Nt)}).meta({id:"Plan","x-revturbine-schema-persistence":Tc,"x-revturbine-schema-exposure":Fs,..._k,...cs()}),vk=Rr("PlanAnchor"),qo=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...Nt,readOnly:true}),handle:er.meta({...Nt,readOnly:true}),plan_id:z$1.string().min(1).meta(Nt),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(Nt),segment_id:z$1.string().nullable().default(null).meta(Nt),price_amount:z$1.number().min(0).meta(_u),pricing_model:Cc.meta(Nt),visibility:la.default("public").meta(Nt),stripe_price_id:z$1.string().optional().meta(Nt),price_source:yu.default("static").meta(Nt)}).meta({id:"PlanVariation","x-revturbine-schema-persistence":Tc,"x-revturbine-schema-exposure":Fs,...$p,...Ni()}),yk=Rr("PlanVariationAnchor"),Do=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...Nt,readOnly:true}),name:js.meta(Nt),handle:er.meta(Nt),sort_order:z$1.number().int().default(0).meta(Nt),visibility:la.default("public").meta(Nt),metadata:fi.meta(Nt)}).meta({id:"AddOn","x-revturbine-schema-persistence":Tc,"x-revturbine-schema-exposure":Fs,...bk,...cs()}),xk=Rr("AddOnAnchor"),Mo=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...Nt,readOnly:true}),handle:er.meta({...Nt,readOnly:true}),addon_id:z$1.string().min(1).meta(Nt),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(Nt),segment_id:z$1.string().nullable().default(null).meta(Nt),price_amount:z$1.number().min(0).meta(_u),pricing_model:Cc.meta(Nt),visibility:la.default("public").meta(Nt),stripe_price_id:z$1.string().optional().meta(Nt),price_source:yu.default("static").meta(Nt)}).meta({id:"AddOnVariation","x-revturbine-schema-persistence":Tc,"x-revturbine-schema-exposure":Fs,...$p,...Ni()}),Sk=Rr("AddOnVariationAnchor"),Ik=z$1.enum(["monthly","annual","one_time","custom"]).meta({id:"StripePriceBillingPeriod","x-revturbine-schema-persistence":vu,"x-revturbine-schema-exposure":Fs}),No=vn.merge(En).merge(wn).extend({stripe_price_id:z$1.string().min(1).meta(Nt),stripe_product_id:z$1.string().min(1).meta(Nt),billing_period:Ik.meta(Nt),unit_amount_cents:z$1.number().int().min(0).nullable().default(null).meta(_u),currency:Y_.meta(_u),pricing_model:Cc.meta(Nt),nickname:z$1.string().nullable().default(null).meta(Nt),is_mock:z$1.boolean().default(false).meta(Nt),last_updated_from_stripe:hu.meta(Nt)}).meta({id:"StripePrice","x-revturbine-schema-persistence":Tc,"x-revturbine-schema-exposure":Fs,...$p}),Pk=ni(Bo),Tk=ni(qo),Ck=ni(Do),kk=ni(Mo),Rk=ni(No);({"/api/plan-anchors":{get:E({operationId:"listPlanAnchors",requestParams:{query:Jt},summary:"List plan anchors (identity registry)",tags:["plans"],responses:{200:{description:"Plan anchor list",content:{"application/json":{schema:Xt(vk)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"plan-anchors",persistence:{table:"plans",mode:"list"}}})},"/api/plans":{get:E({operationId:"listPlans",requestParams:{query:Jt},summary:"List plans",tags:["plans"],responses:{200:{description:"Plan list response",content:{"application/json":{schema:Xt(Bo)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"list"}}}),post:E({operationId:"createPlan",summary:"Create plan",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:kr(Bo)}}},responses:{201:{description:"Created plan",content:{"application/json":{schema:Bo}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"create"}}})},"/api/plans/{planId}":{get:E({operationId:"getPlan",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Get plan by ID",tags:["plans"],responses:{200:{description:"Plan detail",content:{"application/json":{schema:Bo}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"get"}}}),patch:E({operationId:"updatePlan",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Update plan",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Pk}}},responses:{200:{description:"Updated plan",content:{"application/json":{schema:Bo}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"update"}}}),delete:E({operationId:"deletePlan",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Delete plan",tags:["plans"],responses:{204:{description:"Plan deleted"},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"delete"}}})},"/api/plans/reorder":{post:E({operationId:"reorderPlans",summary:"Reorder plans",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({ids:z$1.array(z$1.string())})}}},responses:{200:{description:"Reordered"}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"reorder"}}})},"/api/plan-variation-anchors":{get:E({operationId:"listPlanVariationAnchors",requestParams:{query:Jt},summary:"List plan variation anchors (identity registry)",tags:["plans"],responses:{200:{description:"Plan variation anchor list",content:{"application/json":{schema:Xt(yk)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"plan-variation-anchors",persistence:{table:"planVariations",mode:"list"}}})},"/api/plans/{planId}/variations":{get:E({operationId:"listPlanVariations",requestParams:{path:z$1.object({planId:z$1.string()}),query:Jt},summary:"List plan variations",tags:["plans"],responses:{200:{description:"Plan variations",content:{"application/json":{schema:Xt(qo)}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"list"}}}),post:E({operationId:"createPlanVariation",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Create plan variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:kr(qo)}}},responses:{201:{description:"Created plan variation",content:{"application/json":{schema:qo}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"create"}}})},"/api/plan-variations/{variationId}":{get:E({operationId:"getPlanVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Get plan variation by ID",tags:["plans"],responses:{200:{description:"Plan variation detail",content:{"application/json":{schema:qo}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"get"}}}),patch:E({operationId:"updatePlanVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Update plan variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Tk}}},responses:{200:{description:"Updated plan variation",content:{"application/json":{schema:qo}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"update"}}}),delete:E({operationId:"deletePlanVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Delete plan variation",tags:["plans"],responses:{204:{description:"Plan variation deleted"}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"delete"}}})},"/api/addon-anchors":{get:E({operationId:"listAddOnAnchors",requestParams:{query:Jt},summary:"List add-on anchors (identity registry)",tags:["plans"],responses:{200:{description:"Add-on anchor list",content:{"application/json":{schema:Xt(xk)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"addon-anchors",persistence:{table:"addons",mode:"list"}}})},"/api/addons":{get:E({operationId:"listAddOns",requestParams:{query:Jt},summary:"List add-ons",tags:["plans"],responses:{200:{description:"Add-on list",content:{"application/json":{schema:Xt(Do)}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"list"}}}),post:E({operationId:"createAddOn",summary:"Create add-on",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:kr(Do)}}},responses:{201:{description:"Created add-on",content:{"application/json":{schema:Do}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"create"}}})},"/api/addons/{addonId}":{get:E({operationId:"getAddOn",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Get add-on by ID",tags:["plans"],responses:{200:{description:"Add-on detail",content:{"application/json":{schema:Do}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"get"}}}),patch:E({operationId:"updateAddOn",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Update add-on",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Ck}}},responses:{200:{description:"Updated add-on",content:{"application/json":{schema:Do}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"update"}}}),delete:E({operationId:"deleteAddOn",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Delete add-on",tags:["plans"],responses:{204:{description:"Add-on deleted"}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"delete"}}})},"/api/addon-variation-anchors":{get:E({operationId:"listAddOnVariationAnchors",requestParams:{query:Jt},summary:"List add-on variation anchors (identity registry)",tags:["plans"],responses:{200:{description:"Add-on variation anchor list",content:{"application/json":{schema:Xt(Sk)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"addon-variation-anchors",persistence:{table:"addonVariations",mode:"list"}}})},"/api/addons/{addonId}/variations":{get:E({operationId:"listAddOnVariations",requestParams:{path:z$1.object({addonId:z$1.string()}),query:Jt},summary:"List add-on variations",tags:["plans"],responses:{200:{description:"Add-on variations",content:{"application/json":{schema:Xt(Mo)}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"list"}}}),post:E({operationId:"createAddOnVariation",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Create add-on variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:kr(Mo)}}},responses:{201:{description:"Created variation",content:{"application/json":{schema:Mo}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"create"}}})},"/api/addon-variations/{variationId}":{get:E({operationId:"getAddOnVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Get add-on variation by ID",tags:["plans"],responses:{200:{description:"Add-on variation detail",content:{"application/json":{schema:Mo}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"get"}}}),patch:E({operationId:"updateAddOnVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Update add-on variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:kk}}},responses:{200:{description:"Updated variation",content:{"application/json":{schema:Mo}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"update"}}}),delete:E({operationId:"deleteAddOnVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Delete add-on variation",tags:["plans"],responses:{204:{description:"Variation deleted"}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"delete"}}})},"/api/stripe-prices":{get:E({operationId:"listStripePrices",requestParams:{query:Jt},summary:"List Stripe prices",tags:["plans"],responses:{200:{description:"Stripe price list",content:{"application/json":{schema:Xt(No)}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"list"}}}),post:E({operationId:"createStripePrice",summary:"Create Stripe price",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:kr(No)}}},responses:{201:{description:"Created Stripe price",content:{"application/json":{schema:No}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"create"}}})},"/api/stripe-prices/{id}":{get:E({operationId:"getStripePrice",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Get Stripe price by ID",tags:["plans"],responses:{200:{description:"Stripe price detail",content:{"application/json":{schema:No}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"get"}}}),patch:E({operationId:"updateStripePrice",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Update Stripe price",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Rk}}},responses:{200:{description:"Updated Stripe price",content:{"application/json":{schema:No}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"update"}}}),delete:E({operationId:"deleteStripePrice",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Delete Stripe price",tags:["plans"],responses:{204:{description:"Stripe price deleted"}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"delete"}}})}});var {Unrestricted:h}=Di,{Persisted:Ko,Transient:Xe}=aa,{Internal:Ii,External:St}=os,pt=Nn(mn.Playbook,{sdkInput:true}),Ho=Nn(mn.Playbook,{sdkInput:false}),oa=Nn(mn.Playbook,{inConfig:false,sdkInput:false}),bb=Nn(mn.Playbook,{inConfig:false,sdkInput:true}),bc=Nn(mn.Playbook,{inConfig:false,sdkInput:true,source:Mi.CodeConstant}),Mp=Nn(mn.Playbook,{inConfig:false,sdkInput:true,source:Mi.Runtime}),Np=Nn(mn.Playbook,{inConfig:false,sdkInput:false,source:Mi.Runtime}),Ek=Nn(mn.Billing,{sdkInput:false}),wk=Nn(mn.Metering,{sdkInput:false}),Ok=Nn(mn.Branding,{inConfig:true,sdkInput:true}),Ak=Nn(mn.Branding,{sdkInput:false}),jk="1.0.0",vc=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...h,readOnly:true}),name:js.meta(h),handle:er.meta(h),description:fu.meta(h),is_default:z$1.boolean().default(false).meta(h),entitlement_ids:z$1.array(z$1.string()).default([]).meta(h),metadata:fi.meta(h)}).meta({id:"SeatType","x-revturbine-schema-persistence":Ko,"x-revturbine-schema-exposure":Ii,...oa,...cs()}),Fk=Rr("SeatTypeAnchor"),yc=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...h,readOnly:true}),handle:er.meta(h),label:z$1.string().min(1).meta(h),description:z$1.string().nullable().default(null).meta(h),category:z$1.enum(["user","plan","usage","trial","billing","promotion","custom"]).meta(h),data_source:z$1.string().nullable().default(null).meta(h),example_value:z$1.string().nullable().default(null).meta(h),value_map:z$1.record(z$1.string(),z$1.string()).default({}).meta(h),format:z$1.enum(["string","number","currency","percentage","date"]).nullable().default(null).meta(h),metadata:fi.meta(h)}).meta({id:"PersonalizationToken","x-revturbine-schema-persistence":Ko,"x-revturbine-schema-exposure":Ii,...oa,...cs()}),Lk=Rr("PersonalizationTokenAnchor"),Vk=z$1.enum(["not_started","started","details_submitted","charges_enabled","activated","deauthorized"]).meta({id:"OnboardingState","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":Ii}),Hp=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({handle:er.meta({...h,readOnly:true}),stripe_account_id:z$1.string().min(1).meta(h),live_mode:z$1.boolean().default(false).meta(h),onboarding_state:Vk.default("not_started").meta({...h,readOnly:true}),onboarding_complete:z$1.boolean().default(false).meta({...h,readOnly:true}),charges_enabled:z$1.boolean().default(false).meta({...h,readOnly:true}),details_submitted:z$1.boolean().default(false).meta({...h,readOnly:true}),payouts_enabled:z$1.boolean().default(false).meta({...h,readOnly:true}),webhook_secret_set:z$1.boolean().default(false).meta({...h,readOnly:true}),sync_products:z$1.boolean().default(true).meta(h),sync_prices:z$1.boolean().default(true).meta(h),sync_subscriptions:z$1.boolean().default(true).meta(h),sync_invoices:z$1.boolean().default(false).meta(h),default_currency:z$1.string().length(3).default("USD").meta(h),tax_behavior:z$1.enum(["inclusive","exclusive","unspecified"]).default("unspecified").meta(h),last_sync_at:z$1.string().optional().meta({...h,readOnly:true}),metadata:fi.meta(h)}).meta({id:"StripeIntegrationConfig","x-revturbine-schema-persistence":Ko,"x-revturbine-schema-exposure":Ii,...Ek,...Ni()});z$1.object({theme:z$1.record(z$1.string(),z$1.unknown()).optional().meta(h),workspace_name:z$1.string().optional().meta(h),logo_url:z$1.string().optional().meta(h),support_email:z$1.string().optional().meta(h)}).meta({id:"BrandingConfig","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...Ak});var xc=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({handle:er.meta({...h,readOnly:true}),entitlement_id:z$1.string().min(1).meta(h),meter_key:z$1.string().min(1).max(100).meta(h),aggregation_type:z$1.enum(["sum","count","max","last_value"]).default("sum").meta(h),reset_period:z$1.enum(["none","daily","weekly","monthly","yearly"]).default("monthly").meta(h),stripe_meter_id:z$1.string().nullable().default(null).meta(h),is_active:z$1.boolean().default(true).meta(h),metadata:fi.meta(h)}).meta({id:"MeteringConfig","x-revturbine-schema-persistence":Ko,"x-revturbine-schema-exposure":Ii,...wk,...Ni()}),rb=z$1.enum(["block","warn","downgrade","throttle","notify_admin","custom"]).meta({id:"EnforcementAction","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":Ii}),Sc=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...h,readOnly:true}),handle:er.meta({...h,readOnly:true}),entitlement_id:z$1.string().min(1).meta(h),soft_limit_percent:z$1.number().min(0).max(100).default(80).meta(h),hard_limit_percent:z$1.number().min(0).max(100).default(100).meta(h),soft_limit_action:rb.default("warn").meta(h),hard_limit_action:rb.default("block").meta(h),grace_period_hours:z$1.number().int().min(0).default(0).meta(h),notification_channels:z$1.array(z$1.enum(["email","in_app","webhook"])).default(["in_app"]).meta(h),is_active:z$1.boolean().default(true).meta(h)}).meta({id:"UsageEnforcementSettings","x-revturbine-schema-persistence":Ko,"x-revturbine-schema-exposure":Ii,...bb,...Ni()}),Uk=Rr("UsageEnforcementSettingsAnchor"),Bk=z$1.object({kind:z$1.enum(["template","slot"]).meta(h),id:z$1.string().min(1).meta(h),label:z$1.string().min(1).optional().meta(h)}).meta({id:"PlacementSettingsCapRuleGroupItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":Ii}),qk=z$1.object({id:z$1.string().min(1).meta(h),group:z$1.array(Bk).min(1).meta(h),cap:z$1.object({count:z$1.number().int().min(1).meta(h),period:z$1.enum(["session","day","week","month"]).meta(h)}).meta(h)}).meta({id:"PlacementSettingsCapRule","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":Ii}),Dk=z$1.enum(["off","test_users","all_traffic"]).meta({id:"PlacementTestMode","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":Ii}),vb=z$1.object({capRules:z$1.array(qk).default([]).meta(h),sessionCooldownMinutes:z$1.number().int().min(0).default(30).meta(h),remindLaterMinutes:z$1.number().int().min(0).default(60).meta(h),testMode:Dk.default("off").meta(h)}).meta({id:"PlacementSettingsCapState","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":Ii}),zp=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...h,readOnly:true}),handle:er.meta({...h,readOnly:true}),global_frequency_cap:vb.nullable().default(null).meta(h),global_frequency_cap_period:z$1.enum(["hour","day","week","month","session"]).nullable().default(null).meta(h),suppress_for_paid:z$1.boolean().default(false).meta(h),suppress_for_trial:z$1.boolean().default(false).meta(h),allow_stacking:z$1.boolean().default(false).meta(h),priority_collision_strategy:z$1.enum(["highest_priority","most_recent","random"]).default("highest_priority").meta(h)}).meta({id:"PlacementSettings","x-revturbine-schema-persistence":Ko,"x-revturbine-schema-exposure":Ii,...bb,...Ni()}),Mk=Rr("PlacementSettingsAnchor"),Nk=z$1.object({field:z$1.string().min(1).meta(h),operator:z$1.enum(["eq","neq","gt","lt","gte","lte","contains","in"]).meta(h),value:z$1.string().meta(h)}).meta({id:"RevTurbineConfigSegmentsItemPredicatesItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St}),Hk=z$1.object({name:z$1.string().min(1).meta(h),handle:z$1.string().min(1).meta(h),predicates:z$1.array(Nk).optional().meta(h),dimension_id:z$1.string().optional().meta(h),experiment_id:z$1.string().min(1).optional().meta(h)}).meta({id:"RevTurbineConfigSegmentsItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),zk=z$1.object({unique_handle:z$1.string().min(1).meta(h),name:z$1.string().min(1).meta(h),tier_position:z$1.number().int().min(0).default(0).meta(h),sort_order:z$1.number().int().min(0).default(0).meta(h),visibility:la.default("public").meta(h)}).meta({id:"RevTurbineConfigPlansItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),Kk=z$1.object({unique_handle:z$1.string().min(1).meta(h),name:z$1.string().min(1).meta(h),sort_order:z$1.number().int().min(0).default(0).meta(h),visibility:la.default("public").meta(h)}).meta({id:"RevTurbineConfigAddonsItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...Ho}),Gk=z$1.object({handle:z$1.string().min(1).meta(h),plan_handle:z$1.string().min(1).meta(h),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(h),segment_handle:z$1.string().nullable().default(null).meta(h),price_amount:z$1.number().min(0).meta(h),pricing_model:Cc.meta(h),visibility:la.default("public").meta(h),stripe_price_id:z$1.string().nullable().default(null).meta(h),price_source:yu.meta(h)}).meta({id:"RevTurbineConfigPlanVariationsItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...oa}),$k=z$1.object({handle:z$1.string().min(1).meta(h),addon_handle:z$1.string().min(1).meta(h),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(h),segment_handle:z$1.string().nullable().default(null).meta(h),price_amount:z$1.number().min(0).meta(h),pricing_model:Cc.meta(h),visibility:la.default("public").meta(h),stripe_price_id:z$1.string().nullable().default(null).meta(h),price_source:yu.meta(h)}).meta({id:"RevTurbineConfigAddonVariationsItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...oa}),Zk=z$1.object({handle:z$1.string().min(1).meta(h),name:z$1.string().min(1).meta(h),description:z$1.string().nullable().default(null).meta(h),is_default:z$1.boolean().default(false).meta(h),entitlement_handles:z$1.array(z$1.string()).default([]).meta(h)}).meta({id:"RevTurbineConfigSeatTypesItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),Yk=z$1.object({handle:z$1.string().min(1).meta(h),entitlement_handle:z$1.string().nullable().default(null).meta(h),soft_limit_percent:z$1.number().int().min(0).nullable().default(null).meta(h),hard_limit_percent:z$1.number().int().min(0).nullable().default(null).meta(h),soft_limit_action:z$1.string().meta(h),hard_limit_action:z$1.string().meta(h),grace_period_hours:z$1.number().int().min(0).nullable().default(null).meta(h),notification_channels:z$1.array(z$1.string()).default([]).meta(h),is_active:z$1.boolean().default(true).meta(h)}).meta({id:"RevTurbineConfigEnforcementDefaultsItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),Wk=z$1.object({handle:z$1.string().min(1).meta(h),global_frequency_cap:vb.nullable().default(null).meta(h),global_frequency_cap_period:z$1.enum(["hour","day","week","month","session"]).nullable().default(null).meta(h),suppress_for_paid:z$1.boolean().default(false).meta(h),suppress_for_trial:z$1.boolean().default(false).meta(h),allow_stacking:z$1.boolean().default(false).meta(h),priority_collision_strategy:z$1.string().nullable().default(null).meta(h)}).meta({id:"RevTurbineConfigPlacementSettingsItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),Xk=z$1.object({handle:z$1.string().min(1).meta(h),name:z$1.string().min(1).meta(h),category:z$1.string().nullable().default(null).meta(h),visibility_toggle:z$1.boolean().default(true).meta(h),source_type:z$1.string().nullable().default(null).meta(h)}).meta({id:"RevTurbineConfigSegmentDimensionsItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),Jk=z$1.object({handle:z$1.string().min(1).meta(h),entitlement_handle:z$1.string().min(1).meta(h),meter_handle:z$1.string().min(1).meta(h),limit:z$1.number().int().min(0).nullable().default(null).meta(h),reset_period:z$1.string().nullable().default(null).meta(h)}).meta({id:"RevTurbineConfigMeterBindingsItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),Qk=z$1.object({unique_handle:z$1.string().min(1).meta(h),name:z$1.string().min(1).meta(h),type:pu.meta(h),unit:z$1.string().optional().meta(h),tier_definitions:z$1.array(z$1.object({name:z$1.string(),handle:z$1.string(),description:z$1.string().optional()})).optional().meta(h)}).meta({id:"RevTurbineConfigEntitlementsItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),yb=z$1.object({id:z$1.string().min(1).meta(h),entitlement_id:z$1.string().min(1).meta(h),targets:z$1.array(ub).min(1).meta(h),segment_ids:z$1.array(z$1.string()).default([]).meta(h),kind:pu.optional().meta({...h,readOnly:true}),unit:z$1.string().optional().meta({...h,readOnly:true}),tier_name:z$1.string().optional().meta({...h,readOnly:true}),tier_description:z$1.string().optional().meta({...h,readOnly:true}),...zo.pick({enabled:true,limit_value:true,enforcement:true,tier_value:true,period_scope:true,included_count:true,seat_type_id:true,initial_grant:true,allowance_value:true,rollover_enabled:true,max_balance:true,reset_period:true,max_seats:true,rate_value:true,amount_cents:true,currency:true}).shape,current_usage:z$1.number().default(0).meta(h),allocation:bu.optional().meta(h)}).meta({id:"RevTurbineConfigEntitlementRulesItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),eR=z$1.object({slot_id:z$1.string().min(1).meta(h),active:z$1.boolean().meta(h),triggers:z$1.array(z$1.string()).meta(h)}).meta({id:"RevTurbineConfigSlotConfigsItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),tR=z$1.object({id:z$1.string().min(1).meta(h),label:z$1.string().min(1).meta(h),description:z$1.string().meta(h),surface_type:z$1.string().meta(h),placement_handle:z$1.string().min(1).meta(h),template:z$1.string().optional().meta(h)}).meta({id:"RevTurbineConfigPlacementSlotsItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),nR=z$1.object({name:z$1.string().min(1).meta(h),type:z$1.string().optional().meta(h),required:z$1.boolean().optional().meta(h)}).meta({id:"RevTurbineConfigSurfaceTemplatesItemFieldsItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St}),rR=z$1.object({id:z$1.string().min(1).meta(h),surface_type:z$1.string().meta(h),fields:z$1.array(nR).optional().meta(h)}).meta({id:"RevTurbineConfigSurfaceTemplatesItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),iR=z$1.enum(["open_checkout_modal","navigate_to_plans","open_upgrade_modal","open_placement","book_demo","open_feature_tour","extend_trial","switch_billing_period","custom_url","dismiss","contact_sales","complete_onboarding","invite_teammate","refer_friend","verify_work_email","update_payment_method","enable_auto_renewal","manage_subscription","snooze"]).meta({id:"RevTurbineConfigUiPathActionType","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St}),sR=z$1.object({name:z$1.string().min(1).meta(h),action_type:iR.meta(h),plan_handle:z$1.string().optional().meta(h),promotion_id:z$1.string().optional().meta(h),placement_handle:z$1.string().optional().meta(h),url:z$1.string().optional().meta(h),tour_id:z$1.string().optional().meta(h),target_billing_period:z$1.enum(["monthly","annual"]).optional().meta(h),description:z$1.string().optional().meta(h)}).meta({id:"ContentUiPath","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),aR=z$1.object({id:z$1.string().meta(h),name:z$1.string().meta(h),discount:z$1.string().meta(h),type:z$1.string().meta(h),status:z$1.string().meta(h)}).meta({id:"ContentPromotion","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),oR=z$1.object({token:z$1.string().regex(/^[a-z][a-z0-9_]*$/).meta(h),label:z$1.string().min(1).meta(h),description:z$1.string().optional().meta(h),category:z$1.enum(["user","plan","usage","trial","billing","promotion","custom"]).meta(h),data_source:z$1.string().optional().meta(h),example_value:z$1.string().optional().meta(h),value_map:z$1.record(z$1.string(),z$1.string()).optional().meta(h),format:z$1.enum(["string","number","currency","percentage","date"]).optional().meta(h)}).meta({id:"RevTurbineConfigPersonalizationTokensItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),ib=z$1.object({header:z$1.string().optional().meta(h),body:z$1.string().optional().meta(h),cta_label:z$1.string().optional().meta(h),secondary_cta_label:z$1.string().optional().meta(h)}).catchall(z$1.unknown()).meta({id:"MessageBlockContent","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St}),lR=z$1.object({block_id:z$1.string().min(1).meta(h),tenant_id:z$1.string().min(1).meta(h),name:z$1.string().min(1).meta(h),surface_template_id:z$1.string().optional().meta(h),default_content:ib.meta(h),segment_overrides:z$1.array(z$1.object({segment_value_id:z$1.string(),content:ib})).optional().meta(h),child_blocks:z$1.array(z$1.object({slot:z$1.string(),block_id:z$1.string()})).optional().meta(h),tokens_used:z$1.array(z$1.string()).optional().meta(h),status:z$1.enum(["draft","active","archived"]).meta(h),created_at:z$1.string().datetime().meta({...h,readOnly:true}),updated_at:z$1.string().datetime().meta({...h,readOnly:true})}).meta({id:"MessageBlock","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),cR=z$1.object({label:z$1.string().meta(h),path:W_.meta(h),config:z$1.record(z$1.string(),z$1.string()).optional().meta(h)}).meta({id:"RevTurbineConfigStudioCtaConfig","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St}),xb=z$1.object({template_id:z$1.string().min(1).meta(h),fields:z$1.record(z$1.string(),z$1.string()).meta(h),ctas:z$1.array(cR).meta(h)}).meta({id:"RevTurbineConfigStudioPayloadSurface","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St}),Sb=z$1.object({plan_ids:z$1.array(z$1.string()).meta(h),billing_cadences:z$1.array(z$1.string()).optional().meta(h),segment_chips:z$1.array(z$1.string()).meta(h)}).meta({id:"RevTurbineConfigStudioPayloadTarget","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St}),dR=z$1.object({count:z$1.number().int().min(1).meta(h),period:z$1.enum(["session","day","week","month","lifetime"]).meta(h)}).meta({id:"RevTurbineConfigPeriodCap","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St}),Ib=z$1.object({max_per_period:dR.optional().meta(h),cooldown_days:z$1.number().int().min(0).optional().meta(h)}).meta({id:"RevTurbineConfigStudioPayloadCaps","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St}),uR=z$1.object({id:z$1.string().min(1).meta(h),target:Sb.meta(h),surfaces:z$1.array(xb).meta(h),caps:Ib.optional().meta(h),surface_slot_ids:z$1.array(z$1.string()).optional().meta(h),remind_later_minutes:z$1.number().int().min(0).nullable().optional().meta(h),created_at:z$1.string().optional().meta({...h,readOnly:true}),recommendation_strategy:z$1.enum(["next_tier_up","best_value","custom"]).optional().default("next_tier_up").meta(h),recommendation_plan_override:z$1.string().optional().meta(h)}).meta({id:"RevTurbineConfigStudioPayload","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St}),mR=z$1.discriminatedUnion("type",[z$1.object({type:z$1.literal("surface_render"),slot_id:z$1.string().min(1)}),z$1.object({type:z$1.literal("entitlement_gate"),entitlement_handle:z$1.string().min(1),tier_threshold:z$1.string().optional()}),z$1.object({type:z$1.literal("usage_threshold"),entitlement_handle:z$1.string().min(1),threshold_percent:Va}),z$1.object({type:z$1.literal("credit_threshold"),entitlement_handle:z$1.string().min(1),threshold_percent:Va}),z$1.object({type:z$1.literal("seat_threshold"),entitlement_handle:z$1.string().min(1),threshold_percent:Va}),z$1.object({type:z$1.literal("trial_started"),trial_type:z$1.enum(["free","reverse"]).optional()}),z$1.object({type:z$1.literal("trial_progress"),progress_percent:z$1.number().min(1).max(100)}),z$1.object({type:z$1.literal("trial_ending"),days_before_end:z$1.number().int().min(0)}),z$1.object({type:z$1.literal("trial_ended")}),z$1.object({type:z$1.literal("trial_converted")}),z$1.object({type:z$1.literal("qualifier"),qualifier:z$1.string().min(1)})]).meta({id:"RevTurbineConfigPlacementTrigger","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St}),pR=z$1.enum(["fixed","gated","usage_credit_seat","trials","other_conversion","retention"]).meta({id:"RevTurbineConfigPlacementCategory","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St}),fR=z$1.object({id:z$1.string().min(1).meta(h),name:z$1.string().min(1).meta(h),category:pR.meta(h),trigger:mR.meta(h),payloads:z$1.array(uR).meta(h),order:z$1.number().int().min(0).meta(h)}).meta({id:"RevTurbineConfigPlacementItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),hR=z$1.object({payload_id:z$1.string().min(1).meta(h),placement_id:z$1.string().min(1).meta(h),target:Sb.meta(h),caps:Ib.optional().meta(h),remind_later_minutes:z$1.number().int().min(0).nullable().optional().meta(h),created_at:z$1.string().meta({...h,readOnly:true}),updated_at:z$1.string().datetime().optional().meta({...h,readOnly:true}),source_mode:z$1.enum(["inline","content_linked"]).meta(h),surfaces:z$1.array(xb).optional().meta(h),surface_slot_ids:z$1.array(z$1.string()).optional().meta(h),content_link:z$1.object({message_block_id:z$1.string().optional(),ui_path_id:z$1.string().optional(),promotion_id:z$1.string().optional(),content_payload_id:z$1.string().optional()}).optional().meta(h)}).meta({id:"RevTurbineConfigPlacementPayloadItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),gR=z$1.object({kind:z$1.string().min(1).meta(h),schema_version:z$1.number().int().nonnegative().meta(h),config:z$1.unknown().meta(h)}).meta({id:"RevTurbineConfigExtensionRulesItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),_R=vn.merge(fb).meta({id:"RevTurbineConfigFreeTrialRuleItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...oa}),bR=vn.merge(hb).meta({id:"RevTurbineConfigReverseTrialRuleItem","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...oa}),vR=z$1.object({plans:z$1.array(zk).meta({...h,...pt}),addons:z$1.array(Kk).optional().meta({...h,...Ho}),entitlements:z$1.array(Qk).meta({...h,...pt}),entitlement_rules:z$1.array(yb).meta({...h,...pt}),segments:z$1.array(Hk).meta({...h,...pt}),content_ui_paths:z$1.array(sR).meta({...h,...pt}),slot_configs:z$1.array(eR).optional().meta({...h,...pt,...Up({since:"0.1.117",replacement:"SDK-local activation/trigger state",removeAfter:"one compatibility window",reason:"Slot activation moved to SDK-local state (plan 118 TASK-6); no longer a Playbook authoring input."})}),content_overrides:z$1.record(z$1.string(),z$1.record(z$1.string(),z$1.string())).optional().meta({...h,...pt,...Up({since:"0.1.117",replacement:"Message Block / Placement Payload content",removeAfter:"one compatibility window",reason:"Content overrides moved to Message Block / Payload content (plan 118 TASK-6); no longer a Playbook authoring input."})}),theme:z$1.record(z$1.string(),z$1.unknown()).optional().meta({...h,...Ok,...Up({since:"0.1.111",replacement:"SDK branding argument",removeAfter:"one compatibility window",reason:"Branding is independently owned and is not Playbook strategy."})}),placement_slots:z$1.array(tR).optional().meta({...h,...pt}),message_blocks:z$1.array(lR).optional().meta({...h,...pt}),placement_payloads:z$1.array(hR).optional().meta({...h,...pt}),placements:z$1.array(fR).optional().meta({...h,...pt}),content_promotions:z$1.array(aR).optional().meta({...h,...pt}),personalization_tokens:z$1.array(oR).optional().meta({...h,...pt}),surface_templates:z$1.array(rR).optional().meta({...h,...pt}),free_trial_rules:z$1.array(_R).optional().meta({...h,...Ho}),reverse_trial_rules:z$1.array(bR).optional().meta({...h,...Ho}),plan_variations:z$1.array(Gk).optional().meta({...h,...Ho}),addon_variations:z$1.array($k).optional().meta({...h,...Ho}),extension_rules:z$1.array(gR).optional().meta({...h,...pt}),seat_types:z$1.array(Zk).optional().meta({...h,...pt}),enforcement_defaults:z$1.array(Yk).optional().meta({...h,...pt}),placement_settings:z$1.array(Wk).optional().meta({...h,...pt}),segment_dimensions:z$1.array(Xk).optional().meta({...h,...pt}),meter_bindings:z$1.array(Jk).optional().meta({...h,...pt}),experiments:z$1.array(z$1.unknown()).max(0).optional().meta({...h,...oa}),signal_catalog:z$1.object({}).strict().optional().meta({...h,...oa})}).meta({id:"PlaybookBody","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt}),yR=z$1.object({artifact_type:z$1.literal("playbook").meta({...h,...bc,readOnly:true}),format_version:z$1.literal(jk).meta({...h,...bc,readOnly:true}),playbook_handle:z$1.string().min(1).default("default").meta({...h,...bc}),playbook_version_id:z$1.string().nullable().default(null).meta({...h,...Mp,readOnly:true}),tenant_id:z$1.string().min(1).optional().meta({...h,...Np,readOnly:true}),environment_id:z$1.string().min(1).optional().meta({...h,...Np,readOnly:true}),project_id:z$1.string().min(1).optional().meta({...h,...Np,readOnly:true}),exported_at:z$1.string().datetime().optional().meta({...h,...Mp,readOnly:true}),schema_version:z$1.string().min(1).optional().meta({...h,...bc,readOnly:true}),bundle_schema_version:z$1.number().int().nonnegative().optional().meta({...h,...bc,readOnly:true})}).meta({id:"PlaybookHeader","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...Mp}),Pb=yR.extend(vR.shape).meta({"x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt});function xR(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Tb(n){if(!xR(n))return n;let e={...n};return "artifact_type"in e||(e.artifact_type="playbook"),"version"in e&&("format_version"in e||(e.format_version=e.version),delete e.version),"change_set_id"in e&&("playbook_version_id"in e||(e.playbook_version_id=e.change_set_id),delete e.change_set_id),e}z$1.preprocess(Tb,Pb).meta({id:"Playbook","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt});z$1.preprocess(Tb,Pb.strict()).meta({id:"PlaybookStrict","x-revturbine-schema-persistence":Xe,"x-revturbine-schema-exposure":St,...pt});({"/api/seat-type-anchors":{get:E({operationId:"listSeatTypeAnchors",requestParams:{query:Jt},summary:"List seat type anchors (identity registry)",tags:["config"],responses:{200:{description:"Seat type anchor list",content:{"application/json":{schema:Xt(Fk)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-type-anchors",persistence:{table:"seatTypes",mode:"list"}}})},"/api/config/seat-types":{get:E({operationId:"listSeatTypes",requestParams:{query:Jt},summary:"List seat types",tags:["config"],responses:{200:{description:"Seat type list",content:{"application/json":{schema:Xt(vc)}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"list"}}}),post:E({operationId:"createSeatType",summary:"Create seat type",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:kr(vc)}}},responses:{201:{description:"Created",content:{"application/json":{schema:vc}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"create"}}})},"/api/config/seat-types/{id}":{patch:E({operationId:"updateSeatType",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Update seat type",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:vc.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:vc}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"update"}}}),delete:E({operationId:"deleteSeatType",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Delete seat type",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"delete"}}})},"/api/personalization-token-anchors":{get:E({operationId:"listPersonalizationTokenAnchors",requestParams:{query:Jt},summary:"List personalization token anchors (identity registry)",tags:["config"],responses:{200:{description:"Personalization token anchor list",content:{"application/json":{schema:Xt(Lk)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-token-anchors",persistence:{table:"personalizationTokens",mode:"list"}}})},"/api/config/personalization-tokens":{get:E({operationId:"listPersonalizationTokens",requestParams:{query:Jt},summary:"List personalization tokens",tags:["config"],responses:{200:{description:"Personalization token list",content:{"application/json":{schema:Xt(yc)}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"list"}}}),post:E({operationId:"createPersonalizationToken",summary:"Create personalization token",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:kr(yc)}}},responses:{201:{description:"Created",content:{"application/json":{schema:yc}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"create"}}})},"/api/config/personalization-tokens/{id}":{patch:E({operationId:"updatePersonalizationToken",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Update personalization token",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:yc.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:yc}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"update"}}}),delete:E({operationId:"deletePersonalizationToken",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Delete personalization token",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"delete"}}})},"/api/config/stripe":{put:E({operationId:"upsertStripeIntegrationConfig",summary:"Create or update Stripe integration config",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:ni(Hp)}}},responses:{200:{description:"Saved",content:{"application/json":{schema:Hp}}}},"x-revturbine-operation":{exposure:"internal",resource:"stripe-config",persistence:{table:"stripeIntegrationConfig",mode:"upsert"}}})},"/api/config/metering":{get:E({operationId:"listMeteringConfigs",requestParams:{query:Jt},summary:"List metering configurations",tags:["config"],responses:{200:{description:"Metering config list",content:{"application/json":{schema:Xt(xc)}}}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"list"}}}),post:E({operationId:"createMeteringConfig",summary:"Create metering configuration",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:kr(xc)}}},responses:{201:{description:"Created",content:{"application/json":{schema:xc}}}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"create"}}})},"/api/config/metering/{meteringId}":{patch:E({operationId:"updateMeteringConfig",requestParams:{path:z$1.object({meteringId:z$1.string()})},summary:"Update metering configuration",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:xc.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:xc}}}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"update"}}}),delete:E({operationId:"deleteMeteringConfig",requestParams:{path:z$1.object({meteringId:z$1.string()})},summary:"Delete metering configuration",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"delete"}}})},"/api/usage-enforcement-setting-anchors":{get:E({operationId:"listUsageEnforcementSettingsAnchors",requestParams:{query:Jt},summary:"List usage enforcement setting anchors (identity registry)",tags:["config"],responses:{200:{description:"Usage enforcement setting anchor list",content:{"application/json":{schema:Xt(Uk)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement-setting-anchors",persistence:{table:"usageEnforcementSettings",mode:"list"}}})},"/api/config/usage-enforcement":{get:E({operationId:"listUsageEnforcementSettings",requestParams:{query:Jt},summary:"List usage enforcement settings",tags:["config"],responses:{200:{description:"Enforcement settings",content:{"application/json":{schema:Xt(Sc)}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"list"}}}),post:E({operationId:"createUsageEnforcementSettings",summary:"Create usage enforcement settings",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:kr(Sc)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Sc}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"create"}}})},"/api/config/usage-enforcement/{settingsId}":{patch:E({operationId:"updateUsageEnforcementSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Update usage enforcement settings",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Sc.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Sc}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"update"}}}),delete:E({operationId:"deleteUsageEnforcementSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Delete usage enforcement settings",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"delete"}}})},"/api/placement-setting-anchors":{get:E({operationId:"listPlacementSettingsAnchors",requestParams:{query:Jt},summary:"List placement setting anchors (identity registry)",tags:["config"],responses:{200:{description:"Placement setting anchor list",content:{"application/json":{schema:Xt(Mk)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-setting-anchors",persistence:{table:"placementSettings",mode:"list"}}})},"/api/config/placement-settings":{put:E({operationId:"upsertPlacementSettings",summary:"Create or update global placement settings",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:ni(zp)}}},responses:{200:{description:"Saved",content:{"application/json":{schema:zp}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-settings",persistence:{table:"placementSettingVersions",mode:"upsert"}}})}});var xu=new Int32Array(2);new Float32Array(xu.buffer);new Float64Array(xu.buffer);new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;var Su;(function(n){n[n.UTF8_BYTES=1]="UTF8_BYTES",n[n.UTF16_STRING=2]="UTF16_STRING";})(Su||(Su={}));var{Unrestricted:Pe}=Di,{Persisted:Rc,Transient:ca}=aa,{External:Pi,Internal:CR}=os,jb=Nn(mn.Playbook,{sdkInput:true}),kR=Nn(mn.Playbook,{inConfig:false,sdkInput:false}),RR=Nn(mn.Playbook,{inConfig:false,sdkInput:true}),ER=Nn(mn.Playbook,{inConfig:false,sdkInput:false,source:Mi.Runtime}),wR=z$1.enum(["none_always_on","overage_vs_upgrade","time_bound","payment_failed","payment_at_risk"]);var Fb=z$1.enum(["fixed","gated_feature","usage_limit","trial","other_conversion","retention"]).meta({id:"PlacementCategory","x-revturbine-schema-persistence":ca,"x-revturbine-schema-exposure":Pi}),Lb=z$1.enum(["session","day","week","month","lifetime"]).meta({id:"CapPeriod","x-revturbine-schema-persistence":ca,"x-revturbine-schema-exposure":Pi}),OR=z$1.object({count:z$1.number().int().positive().meta(Pe),period:Lb.meta(Pe)}).meta({id:"PlacementCapRule","x-revturbine-schema-persistence":ca,"x-revturbine-schema-exposure":Pi});z$1.object({surface_type:z$1.string().min(1).meta(Pe),rules:z$1.array(OR).meta(Pe),cooldown_ms:z$1.number().int().nonnegative().optional().meta(Pe)}).meta({id:"SurfaceTypeCapRule","x-revturbine-schema-persistence":Rc,"x-revturbine-schema-exposure":Pi,...Di.Operational,...RR});var AR=z$1.enum(["open_checkout","view_plans","book_demo","contact_sales","complete_onboarding","invite_teammate","refer_friend","verify_work_email","update_payment_method","enable_auto_renewal","manage_subscription","switch_billing_period","extend_trial","open_rt_placement","dismiss","snooze","custom"]).meta({id:"CtaPathType","x-revturbine-schema-persistence":ca,"x-revturbine-schema-exposure":Pi}),Go=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...Pe,readOnly:true}),name:js.meta(Pe),handle:er.meta(Pe),description:fu.meta(Pe),category:Fb.meta(Pe),drag_order_in_category:z$1.number().int().default(0).meta(Pe),surface_slot_id:z$1.string().optional().meta(Pe),entitlement_id:z$1.string().optional().meta(Pe),tier_threshold:z$1.string().optional().meta(Pe),threshold_percent:Va.optional().meta(Pe),trial_type:z$1.enum(["free","reverse"]).optional().meta(Pe),trigger_type:z$1.string().optional().meta(Pe),trial_progress_percent:z$1.number().min(0).max(100).optional().meta(Pe),days_before_end:z$1.number().int().min(0).optional().meta(Pe),qualifier:wR.optional().meta(Pe),activation_window_start:z$1.string().datetime().optional().meta(Pe),activation_window_end:z$1.string().datetime().optional().meta(Pe),metadata:fi.meta(Pe)}).meta({id:"Placement","x-revturbine-schema-persistence":Rc,"x-revturbine-schema-exposure":Pi,...jb,...cs()}),jR=Rr("PlacementAnchor"),FR=z$1.enum(["threshold_not_emitted"]).meta({id:"PlacementWarningCode","x-revturbine-schema-persistence":ca,"x-revturbine-schema-exposure":Pi}),LR=z$1.object({code:FR.meta(Pe),message:z$1.string().min(1).meta(Pe),path:z$1.array(z$1.union([z$1.string(),z$1.number().int()])).optional().meta(Pe)}).meta({id:"PlacementWarning","x-revturbine-schema-persistence":ca,"x-revturbine-schema-exposure":Pi}),Ab=Go.extend({warnings:z$1.array(LR).optional().meta(Pe)}).meta({id:"PlacementWriteResponse","x-revturbine-schema-persistence":ca,"x-revturbine-schema-exposure":Pi}),VR=z$1.object({label:z$1.string().min(1).max(200).meta(Pe),cta_path_type:AR.meta(Pe),config_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Pe)}).meta({id:"CtaObject","x-revturbine-schema-persistence":ca,"x-revturbine-schema-exposure":Pi}),kc=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({anchor_id:z$1.string().min(1).meta({...Pe,readOnly:true}),handle:er.meta({...Pe,readOnly:true}),placement_id:z$1.string().min(1).meta(Pe),drag_order:z$1.number().int().default(0).meta(Pe),target_plan_ids:z$1.array(z$1.string()).default([]).meta(Pe),target_plan_billing_cadences:z$1.array(z$1.string()).default([]).meta(Pe),target_segments:z$1.array(z$1.string()).default([]).meta(Pe),surface_slot_ids:z$1.array(z$1.string()).default([]).meta(Pe),surface_template_id:z$1.string().min(1).meta(Pe),content_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Pe),cta_list:z$1.array(VR).default([]).meta(Pe),max_per_period:z$1.number().int().min(0).nullable().default(null).meta(Pe),max_period_unit:Lb.default("session").meta(Pe),cooldown_after_dismiss_days:z$1.number().int().min(0).default(7).meta(Pe),remind_later_minutes:z$1.number().int().min(0).nullable().default(null).meta(Pe),recommendation_strategy:z$1.enum(["next_tier_up","best_value","custom"]).optional().default("next_tier_up").meta(Pe),recommendation_plan_override:z$1.string().optional().meta(Pe)}).meta({id:"PlacementPayload","x-revturbine-schema-persistence":Rc,"x-revturbine-schema-exposure":Pi,...jb,...Ni()}),UR=Rr("PlacementPayloadAnchor");vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({handle:er.meta({...Pe,readOnly:true}),placement_payload_id:z$1.string().min(1).meta(Pe),experiment_id:z$1.string().min(1).meta(Pe),variant_name:z$1.string().min(1).max(200).meta(Pe),is_control:z$1.boolean().default(false).meta(Pe),traffic_allocation_percent:z$1.number().min(0).max(100).meta(Pe),override_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Pe),status:z$1.enum(["active","paused","complete"]).default("active").meta(Pe)}).meta({id:"PlacementVariant","x-revturbine-schema-persistence":Rc,"x-revturbine-schema-exposure":CR,...kR,...Ni()});var BR=vn.merge(En).merge(wn).merge(Wn).merge(tr).extend({surface_slot_handle:z$1.string().min(1).max(200).meta(Pe),surface_type:Vp.meta(Pe),surface_template_ids:z$1.array(z$1.string()).default([]).meta(Pe),surface_slot_category:z$1.enum(["fixed","gated","triggered"]).default("fixed").meta(Pe),first_seen:z$1.string().datetime().meta({...Pe,readOnly:true}),last_seen:z$1.string().datetime().meta({...Pe,readOnly:true}),status:z$1.enum(["active","inactive","new"]).default("new").meta(Pe),placement_count:z$1.number().int().min(0).default(0).meta({...Pe,readOnly:true})}).meta({id:"SurfaceSlot","x-revturbine-schema-persistence":Rc,"x-revturbine-schema-exposure":Pi,...ER,...cs("surface_slot_handle")}),qR=ni(Go),DR=ni(kc);({"/api/placement-anchors":{get:E({operationId:"listPlacementAnchors",requestParams:{query:Jt},summary:"List placement anchors (identity registry)",tags:["placements"],responses:{200:{description:"Placement anchor list",content:{"application/json":{schema:Xt(jR)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-anchors",persistence:{table:"placements",mode:"list"}}})},"/api/placements":{get:E({operationId:"listPlacements",requestParams:{query:Jt},summary:"List placements",tags:["placements"],responses:{200:{description:"Placement list",content:{"application/json":{schema:Xt(Go)}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"list"}}}),post:E({operationId:"createPlacement",summary:"Create placement",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:kr(Go)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Ab}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"create"}}})},"/api/placements/{placementId}":{get:E({operationId:"getPlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Get placement",tags:["placements"],responses:{200:{description:"Placement detail",content:{"application/json":{schema:Go}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"get"}}}),patch:E({operationId:"updatePlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Update placement",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:qR}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Ab}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"update"}}}),delete:E({operationId:"deletePlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Delete placement",tags:["placements"],responses:{204:{description:"Deleted"},default:{description:"Error",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"delete"}}})},"/api/placements/{placementId}/duplicate":{post:E({operationId:"duplicatePlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Duplicate placement",tags:["placements"],responses:{201:{description:"Duplicated",content:{"application/json":{schema:Go}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"duplicate"}}})},"/api/placements/reorder":{post:E({operationId:"reorderPlacements",summary:"Reorder placements within category",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({category:Fb,ids:z$1.array(z$1.string())})}}},responses:{200:{description:"Reordered"}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"reorder"}}})},"/api/placement-payload-anchors":{get:E({operationId:"listPlacementPayloadAnchors",requestParams:{query:Jt},summary:"List placement payload anchors (identity registry)",tags:["placements"],responses:{200:{description:"Placement payload anchor list",content:{"application/json":{schema:Xt(UR)}}},default:{description:"Error response",content:{"application/json":{schema:Xn}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-payload-anchors",persistence:{table:"placementPayloads",mode:"list"}}})},"/api/placements/{placementId}/payloads":{get:E({operationId:"listPlacementPayloads",requestParams:{path:z$1.object({placementId:z$1.string()}),query:Jt},summary:"List placement payloads",tags:["placements"],responses:{200:{description:"Payload list",content:{"application/json":{schema:Xt(kc)}}}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"list"}}}),post:E({operationId:"createPlacementPayload",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Create placement payload",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:kr(kc)}}},responses:{201:{description:"Created",content:{"application/json":{schema:kc}}}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"create"}}})},"/api/placement-payloads/{payloadId}":{patch:E({operationId:"updatePlacementPayload",requestParams:{path:z$1.object({payloadId:z$1.string()})},summary:"Update placement payload",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:DR}}},responses:{200:{description:"Updated",content:{"application/json":{schema:kc}}}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"update"}}}),delete:E({operationId:"deletePlacementPayload",requestParams:{path:z$1.object({payloadId:z$1.string()})},summary:"Delete placement payload",tags:["placements"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"delete"}}})},"/api/surface-slots":{get:E({operationId:"listSurfaceSlots",requestParams:{query:Jt},summary:"List auto-discovered surface slots",tags:["placements"],responses:{200:{description:"Surface slot list",content:{"application/json":{schema:Xt(BR)}}}},"x-revturbine-operation":{exposure:"external",resource:"surface-slots",persistence:{table:"surfaceSlots",mode:"list"}}})}});var Vb=z$1.enum(["trial_started","trial_ending","trial_ended","trial_converted"]);z$1.object({stages:z$1.array(Vb).default([]),days_before_end:z$1.number().int().min(0).max(365).nullable().default(null),trial_type:z$1.enum(["free","reverse"]).nullable().default(null)});z$1.object({threshold_percent:z$1.number().int().min(0).max(100),trial_type:z$1.enum(["free","reverse"]).nullable().default(null)});var KR=["web-client","server"],GR=z$1.enum(KR),$R=["method","meta","component"],ZR=z$1.enum($R),YR=["ts","python","java","csharp","rust"];z$1.enum(YR);var WR=z$1.object({ts:z$1.string().min(1).optional(),python:z$1.string().min(1).optional(),java:z$1.string().min(1).optional(),csharp:z$1.string().min(1).optional(),rust:z$1.string().min(1).optional()}).strict(),XR=z$1.object({canonical:z$1.string().min(1),aliases:z$1.array(z$1.string().min(1)),kind:ZR,appliesTo:z$1.array(GR).min(1),composes:z$1.string().min(1).optional(),perLanguage:WR.optional(),description:z$1.string().min(1)}).strict().refine(n=>n.kind!=="meta"||n.composes!==void 0,{message:"kind 'meta' requires a `composes` reference",path:["composes"]}),JR=z$1.object({version:z$1.number().int().positive(),functions:z$1.array(XR).min(1)}).strict().superRefine((n,e)=>{let t=new Map;for(let r of n.functions)for(let i of [r.canonical,...r.aliases]){let s=t.get(i);s!==void 0&&e.addIssue({code:"custom",message:`duplicate SDK name "${i}" (also on "${s}")`,path:["functions"]}),t.set(i,r.canonical);}});JR.parse({version:2,functions:[{canonical:"checkEntitlement",aliases:["can"],kind:"method",appliesTo:["web-client","server"],description:"Check whether the user is entitled to a feature/handle; returns the rich EntitlementResult (allowed, status, reason, limits, enforcement)."},{canonical:"gate",aliases:[],kind:"meta",appliesTo:["web-client"],composes:"checkEntitlement",description:"Gate an action behind an entitlement: checks the handle, runs fn when allowed, otherwise returns the entitlement so the caller can surface a paywall."},{canonical:"trackEvent",aliases:["track"],kind:"method",appliesTo:["web-client"],description:"Emit a product/analytics event powering frequency caps, attribution, and experiments."},{canonical:"updateUsage",aliases:["update"],kind:"method",appliesTo:["web-client"],description:"Patch customer-reported usage balances for client-side metering display (the advertised update({ usage }) verb)."},{canonical:"resetIdentity",aliases:["reset"],kind:"method",appliesTo:["web-client"],description:"Clear the current user and revert to the anonymous identity (e.g. on sign-out)."},{canonical:"identify",aliases:[],kind:"method",appliesTo:["web-client"],description:"Associate the session with a known user id and optional traits/context."},{canonical:"getPlacement",aliases:[],kind:"method",appliesTo:["web-client","server"],description:"Resolve a single placement decision for a surface."},{canonical:"getPlacementDecision",aliases:[],kind:"method",appliesTo:["web-client"],description:"Resolve a placement decision from an explicit decision input (headless)."},{canonical:"evaluate",aliases:[],kind:"method",appliesTo:["server"],description:"Batch-evaluate placements + entitlements for a user, returning a serializable payload the client SDK can hydrate."},{canonical:"getTrialStatus",aliases:[],kind:"method",appliesTo:["server"],description:"Fetch the user's trial status for server-side gating."},{canonical:"SurfaceSlotComponent",aliases:["Slot","RTSlot"],kind:"component",appliesTo:["web-client"],description:"React slot component that renders the resolved placement; advertised as <Slot> (<RTSlot> is the deprecated prior name)."},{canonical:"AccessGateSurfaceSlot",aliases:["Gate"],kind:"component",appliesTo:["web-client"],description:"React component that gates content behind an entitlement, rendering an upsell placement when denied; advertised as <Gate>."}]});var QR=[{from:"entitlement_rules",field:"targets[].id",to:"plans",by:"unique_handle",kind:"list",onDelete:"cascade",resolution:"playbook",granularity:"entry",targetKind:"plan",note:"Entry-level; a rule losing its last target is swept whole (targets.min(1))."},{from:"entitlement_rules",field:"targets[].id",to:"addons",by:"unique_handle",kind:"list",onDelete:"cascade",resolution:"playbook",granularity:"entry",targetKind:"addon",note:"Entry-level; a rule losing its last target is swept whole (targets.min(1))."},{from:"entitlement_rules",field:"targets[].id",to:"plan_variations",by:"handle",kind:"list",onDelete:"cascade",resolution:"playbook",granularity:"entry",targetKind:"plan_variation",note:"Variation-level targeting is dead per the plan-125 audit; declared for kind-enum totality."},{from:"entitlement_rules",field:"targets[].id",to:"addon_variations",by:"handle",kind:"list",onDelete:"cascade",resolution:"playbook",granularity:"entry",targetKind:"addon_variation",note:"Variation-level targeting is dead per the plan-125 audit; declared for kind-enum totality."},{from:"plan_variations",field:"plan_handle",to:"plans",by:"unique_handle",kind:"one",onDelete:"cascade",resolution:"playbook"},{from:"addon_variations",field:"addon_handle",to:"addons",by:"unique_handle",kind:"one",onDelete:"cascade",resolution:"playbook"},{from:"plan_variations",field:"segment_handle",to:"segments",by:"handle",kind:"optional",onDelete:"restrict",resolution:"playbook",note:"Detach would silently widen variation availability \u2014 restrict pending Q-1 ratification."},{from:"addon_variations",field:"segment_handle",to:"segments",by:"handle",kind:"optional",onDelete:"restrict",resolution:"playbook",note:"Detach would silently widen variation availability \u2014 restrict pending Q-1 ratification."},{from:"free_trial_rules",field:"plan_id",to:"plans",by:"unique_handle",kind:"optional",onDelete:"restrict",resolution:"playbook",note:'null means "All plans" and never blocks.'},{from:"free_trial_rules",field:"convert_to_plan_id",to:"plans",by:"unique_handle",kind:"optional",onDelete:"restrict",resolution:"playbook"},{from:"free_trial_rules",field:"fallback_plan_id",to:"plans",by:"unique_handle",kind:"optional",onDelete:"restrict",resolution:"playbook"},{from:"reverse_trial_rules",field:"premium_plan_id",to:"plans",by:"unique_handle",kind:"one",onDelete:"restrict",resolution:"playbook"},{from:"reverse_trial_rules",field:"fallback_plan_id",to:"plans",by:"unique_handle",kind:"one",onDelete:"restrict",resolution:"playbook"},{from:"placements",field:"trigger.entitlement_handle",to:"entitlements",by:"unique_handle",kind:"optional",onDelete:"restrict",resolution:"playbook",note:"entitlement_gate / usage_threshold / credit_threshold / seat_threshold trigger variants."},{from:"placements",field:"trigger.slot_id",to:"placement_slots",by:"id",kind:"optional",onDelete:"restrict",resolution:"playbook",note:"surface_render trigger variant."},{from:"placement_payloads",field:"target.segment_chips[]",to:"segments",by:"handle",kind:"list",onDelete:"detach",resolution:"playbook",granularity:"entry",note:"Chip resolution falls back segment \u2192 plan \u2192 literal; stale chips degrade to literals."},{from:"placement_payloads",field:"target.segment_chips[]",to:"plans",by:"unique_handle",kind:"list",onDelete:"detach",resolution:"playbook",granularity:"entry",note:"Chip resolution falls back segment \u2192 plan \u2192 literal; stale chips degrade to literals."},{from:"placement_payloads",field:"surface_slot_ids[]",to:"placement_slots",by:"id",kind:"list",onDelete:"detach",resolution:"playbook",granularity:"entry"},{from:"customer_overrides",field:"plan_handle",to:"plans",by:"unique_handle",kind:"optional",onDelete:"restrict",resolution:"control_plane",note:"Grant-Plan overrides (Q-1 restrict class)."},{from:"subscriptions",field:"variation_handle",to:"plan_variations",by:"handle",kind:"optional",onDelete:"restrict",resolution:"control_plane",note:"Active-subscriber variations (Q-1 restrict class)."},{from:"subscriptions",field:"variation_handle",to:"addon_variations",by:"handle",kind:"optional",onDelete:"restrict",resolution:"control_plane",note:"Active-subscriber add-on variations (Q-1 restrict class)."}];function eE(){let n=[];for(let[e,t]of Object.entries(nb))for(let[r,i]of Object.entries(t.fields)){let s=i.reference;if(s){if(!s.onDelete)throw new Error(`cascade-graph: bundle reference ${e}.${r} \u2192 ${s.table} has no onDelete policy`);n.push({from:e,field:r,to:s.table,by:s.by,kind:s.kind,onDelete:s.onDelete,resolution:"playbook"});}}return n}function tE(n){return [...n].sort((e,t)=>e.from.localeCompare(t.from)||e.field.localeCompare(t.field)||e.to.localeCompare(t.to)||(e.targetKind??"").localeCompare(t.targetKind??""))}Object.freeze(tE([...eE(),...QR]));function nE(){try{return "production"}catch{return}}function rE(){try{return typeof process<"u"}catch{return false}}function $o(){let n=nE();if(n!==void 0)return n!=="production";if(rE())return true;let e=globalThis.location;return e?.hostname==="localhost"||e?.hostname==="127.0.0.1"||e?.hostname==="[::1]"}var Pu="1.0.0",Ub=["plans","entitlements","entitlement_rules","segments","content_ui_paths"],iE=["slot_configs","content_overrides"];function sE(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function aE(n,e){if(!$o())return;let t=iE.filter(r=>r in n);t.length!==0&&console.warn(`[RevTurbine] ${e} uses deprecated Playbook projection(s): ${t.join(", ")}. Move activation/triggers to local runtime state and content to Message Blocks/Placement Payloads.`);}function oE(n,e){for(let t of Ub)if(!Array.isArray(n[t]))throw new Error(`Invalid ${e}: missing array "${t}"`)}function lE(n){return n.artifact_type==="playbook"&&n.format_version===Pu&&typeof n.playbook_handle=="string"&&n.playbook_handle.length>0&&(n.playbook_version_id===null||typeof n.playbook_version_id=="string")&&typeof n.tenant_id=="string"&&n.tenant_id.length>0&&typeof n.environment_id=="string"&&n.environment_id.length>0&&Ub.every(e=>Array.isArray(n[e]))}function cE(n){return (n.project_id===void 0||typeof n.project_id=="string"&&n.project_id.length>0)&&(n.exported_at===void 0||typeof n.exported_at=="string")&&(n.schema_version===void 0||typeof n.schema_version=="string"&&n.schema_version.length>0)&&(n.bundle_schema_version===void 0||Number.isInteger(n.bundle_schema_version)&&Number(n.bundle_schema_version)>=0)}function dE(n,e,t){if(n===void 0)return;if(!sE(n))throw new Error(`Invalid ${e}: expected top-level object`);aE(n,e),oE(n,e);let r="artifact_type"in n||"format_version"in n;if(r&&n.artifact_type!=="playbook")throw new Error(`Invalid ${e}: unsupported "artifact_type"`);if(r&&n.format_version!==Pu)throw new Error(`Invalid ${e}: unsupported "format_version" ${String(n.format_version)}`);if(!r&&n.version!==Pu)throw new Error(`Invalid ${e}: unsupported legacy "version" ${String(n.version)}`);let i=typeof n.tenant_id=="string"&&n.tenant_id.length>0?n.tenant_id:r?void 0:t?.tenantId,s=typeof n.environment_id=="string"&&n.environment_id.length>0?n.environment_id:r?void 0:t?.environmentId;if(!i)throw new Error(`Invalid ${e}: missing non-empty string "tenant_id"`);if(!s)throw new Error(`Invalid ${e}: missing non-empty string "environment_id"`);if(n.playbook_handle!==void 0&&(typeof n.playbook_handle!="string"||n.playbook_handle.length===0))throw new Error(`Invalid ${e}: malformed "playbook_handle"`);if(!cE(n))throw new Error(`Invalid ${e}: malformed optional Playbook header field`);let{version:a,change_set_id:o,...p}=n,v=r?n.playbook_version_id??null:o??null,l={...p,artifact_type:"playbook",format_version:Pu,playbook_handle:n.playbook_handle??"default",playbook_version_id:v,tenant_id:i,environment_id:s};if(!lE(l))throw new Error(`Invalid ${e}: malformed Playbook header`);return l}function Ls(n,e,t){return dE(n,e,t)}var mE="traits:server",Tu=class{constructor(){k(this,"domain",mE);k(this,"snapshot",{});}setSnapshot(e){this.snapshot=e??{};}hasSignals(){return Object.keys(this.toTraits()).length>0}resolve(){return {traits:this.toTraits()}}toTraits(){let e={},t=this.snapshot.trial;return t&&(typeof t.in_trial=="boolean"&&(e.trial_active=t.in_trial),typeof t.state=="string"&&t.state.length>0&&(e.trial_state=t.state),typeof t.days_remaining=="number"&&(e.trial_days_remaining=t.days_remaining)),this.snapshot.payment_at_risk===true&&(e.payment_at_risk=true),e}};var Bb={workspace_name:"Your workspace",theme:{}};function qb(n){return !!n&&Object.keys(n).length>0}var Db=false;function Mb(n={}){let e=(t,r)=>({branding:{...Bb,...t,theme:{...Bb.theme,...t?.theme}},source:r});return qb(n.explicit)?e(n.explicit,"explicit"):qb(n.apiBranding)?e(n.apiBranding,"branding-api"):n.legacyConfigTheme&&Object.keys(n.legacyConfigTheme).length>0?(n.warnOnLegacy!==false&&!Db&&$o()&&(Db=true,console.warn("[RevTurbine] Branding embedded in the config `theme` field is deprecated. Pass a `branding` option to the SDK, or resolve it via the Branding API. See the Branding resolution ladder in the SDK docs.")),e({theme:n.legacyConfigTheme},"legacy-config")):e(void 0,"default")}var Nb="[REDACTED]",pE=/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g,fE=/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/,hE=/\d(?:[ -]?\d){12,18}/g;function gE(n){let e=0,t=false;for(let r=n.length-1;r>=0;r-=1){let i=n.charCodeAt(r)-48;if(i<0||i>9)return false;if(t){let s=i*2;s>9&&(s-=9),e+=s;}else e+=i;t=!t;}return e%10===0}function _E(n){let e=0,t=n.replace(pE,()=>(e+=1,Nb));return t=t.replace(hE,r=>{let i=r.replace(/[ -]/g,"");return i.length>=13&&i.length<=19&&gE(i)?(e+=1,Nb):r}),{value:t,count:e}}function Yp(n){let e=0,t=r=>{if(typeof r=="string"){let i=_E(r);return e+=i.count,i.value}if(Array.isArray(r))return r.map(t);if(r&&typeof r=="object"){let i={};for(let[s,a]of Object.entries(r))i[s]=t(a);return i}return r};return {value:t(n),redactions:e}}function bE(n){return fE.test(n.trim())}function vE(n){let e=n.trim().toLowerCase();return `eml_${SE(e).slice(0,16)}`}function Wp(n){return bE(n)?{value:vE(n),redacted:true}:{value:n,redacted:false}}function Hb(n){let e=Wp(n.user_id??""),t=Yp({url:n.url,path:n.path,page_title:n.page_title,tags:n.tags,traits:n.identity?.traits??null,properties:n.properties});return {value:{...n,url:t.value.url,path:t.value.path,page_title:t.value.page_title,tags:t.value.tags,user_id:n.user_id===null||n.user_id===void 0?n.user_id:e.value,identity:n.identity?{...n.identity,traits:t.value.traits??void 0}:n.identity,properties:t.value.properties},redactions:t.redactions+(e.redacted?1:0)}}var yE=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function xE(n){let e=[];for(let t=0;t<n.length;t+=1){let r=n.charCodeAt(t);if(r<128)e.push(r);else if(r<2048)e.push(192|r>>6,128|r&63);else if(r>=55296&&r<=56319){let i=r,s=n.charCodeAt(t+1);t+=1,r=65536+((i&1023)<<10)+(s&1023),e.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|r&63);}else e.push(224|r>>12,128|r>>6&63,128|r&63);}return e}function us(n,e){return n>>>e|n<<32-e}function SE(n){let e=xE(n),t=e.length*8;for(e.push(128);e.length%64!==56;)e.push(0);for(let I=0;I<4;I+=1)e.push(0);e.push(t>>>24&255,t>>>16&255,t>>>8&255,t&255);let r=1779033703,i=3144134277,s=1013904242,a=2773480762,o=1359893119,p=2600822924,v=528734635,l=1541459225,x=new Array(64);for(let I=0;I<e.length;I+=64){for(let ie=0;ie<16;ie+=1){let Ot=I+ie*4;x[ie]=(e[Ot]<<24|e[Ot+1]<<16|e[Ot+2]<<8|e[Ot+3])>>>0;}for(let ie=16;ie<64;ie+=1){let Ot=us(x[ie-15],7)^us(x[ie-15],18)^x[ie-15]>>>3,Qt=us(x[ie-2],17)^us(x[ie-2],19)^x[ie-2]>>>10;x[ie]=x[ie-16]+Ot+x[ie-7]+Qt>>>0;}let C=r,S=i,V=s,G=a,re=o,Re=p,we=v,ke=l;for(let ie=0;ie<64;ie+=1){let Ot=us(re,6)^us(re,11)^us(re,25),Qt=re&Re^~re&we,ar=ke+Ot+Qt+yE[ie]+x[ie]>>>0,J=us(C,2)^us(C,13)^us(C,22),Dt=C&S^C&V^S&V,an=J+Dt>>>0;ke=we,we=Re,Re=re,re=G+ar>>>0,G=V,V=S,S=C,C=ar+an>>>0;}r=r+C>>>0,i=i+S>>>0,s=s+V>>>0,a=a+G>>>0,o=o+re>>>0,p=p+Re>>>0,v=v+we>>>0,l=l+ke>>>0;}return [r,i,s,a,o,p,v,l].map(I=>I.toString(16).padStart(8,"0")).join("")}var IE={web_signed_up:"system",web_signed_in:"system",cli_signed_up:"system",cli_signed_in:"system",cli_command_executed:"system",changeset_submitted:"workflow",changeset_approved:"workflow",changeset_rejected:"workflow",changeset_deployed:"workflow",changeset_launched:"workflow",changeset_parked:"workflow",changeset_resumed:"workflow",changeset_discarded:"workflow",changeset_archived:"workflow",config_imported:"workflow",config_exported:"workflow",entity_created:"workflow",entity_updated:"workflow",entity_deleted:"workflow",web_api_error:"system"},PE="control_plane_source";function zb(n,e={}){return {eventName:n,properties:{[PE]:IE[n],...e}}}var Cu=class{constructor(e){k(this,"backend");this.backend=e;}getItem(e){try{return this.backend.getItem(e)}catch{return null}}setItem(e,t){try{this.backend.setItem(e,t);}catch{}}removeItem(e){try{this.backend.removeItem(e);}catch{}}};function Xp(n){if(n)return n;if(Mr())try{return new Cu(window.localStorage)}catch{}return new gc}function Kb(n){if(n)return n;if(Mr())try{return new Cu(window.sessionStorage)}catch{}return new gc}var TE=/^[a-z0-9._]{1,100}$/,zn={Persisted:"persisted",Transient:"transient"},Fn={Internal:"internal",External:"external"},Pn={Pii:{"x-revturbine-data-classification":"pii"},Financial:{"x-revturbine-data-classification":"financial"},Unrestricted:{"x-revturbine-data-classification":"unrestricted"},Operational:{"x-revturbine-data-classification":"operational"}};var rv="x-revturbine-schema-exposure",kE="readOnly",RE="x-revturbine-decision-only",Gb={[RE]:true},ii={[rv]:Fn.External},EE={[rv]:Fn.Internal};function xr(n){let e={};for(let[t,r]of Object.entries(n.shape)){if(typeof r!="object"||r===null)continue;r.meta()?.[kE]===true||(e[t]=r);}return z$1.object(e)}function yr(n){let e=xr(n),t=e.shape.handle;return t&&typeof t.regex=="function"?e.extend({handle:t.regex(TE)}):e}var {Unrestricted:ir}=Pn,{Transient:Or,Persisted:wE}=zn,{Internal:Ba,External:ps}=Fn;z$1.object({page:z$1.coerce.number().int().min(1).default(1).meta(ir),per_page:z$1.coerce.number().int().min(1).max(100).default(25).meta(ir)}).meta({id:"PaginationParams","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":ps});var OE=n=>z$1.object({items:z$1.array(n).meta(ir),total:z$1.number().int().min(0).meta(ir),page:z$1.number().int().min(1).meta(ir),per_page:z$1.number().int().min(1).meta(ir),has_more:z$1.boolean().meta(ir)}).meta({id:"PaginatedResponse","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":ps}),Ee=z$1.object({created_at:z$1.string().datetime().meta({...ir,readOnly:true}),updated_at:z$1.string().datetime().meta({...ir,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":ps}),le=z$1.object({id:z$1.string().min(1).meta({...ir,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":ps}),Be=z$1.object({tenant_id:z$1.string().min(1,"tenant_id is required").meta({...ir,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":Ba});z$1.enum(["monthly","annual","quarterly","one_time","usage_based"]).meta({id:"BillingCadence","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":ps});var ju=z$1.enum(["banner","modal","tooltip","sidebar","inline","toast","fullscreen","email","sms","push","in_page","button","full_page","agent","cli","custom"]).meta({id:"SurfaceType","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":ps}),iv=["allowed","limited","denied"];z$1.enum(["presented","clicked","converted","dismissed","reminded","suppressed"]).meta({id:"PresentationOutcome","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":ps});var gf=z$1.enum(["feature","capability_tier","usage_limit","price_per_unit","rate_limit","credits","seat"]).meta({id:"EntitlementType","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":ps}),AE=z$1.enum(["usd","eur","gbp"]).default("usd").meta({id:"Currency","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":ps});z$1.union([z$1.boolean(),z$1.number(),z$1.string()]).meta({id:"FeatureFlagValue","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":Ba});var Bn=z$1.string().min(1).max(200),rn=z$1.string().min(1).max(100),qa=z$1.string().max(500).optional(),Ln=z$1.record(z$1.string(),z$1.unknown()).default({}),Bc=z$1.number().int().min(10).max(100).multipleOf(10),An=z$1.string().datetime().nullable().default(null),ln=z$1.object({environment_id:z$1.string().min(1).default("production").meta({...ir,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":Ba}),fn=z$1.object({playbook_version_id:z$1.string().nullable().default(null).meta(ir),is_current:z$1.boolean().default(true).meta({...ir,readOnly:true}),is_deleted:z$1.boolean().default(false).meta({...ir,readOnly:true}),delete_date:z$1.string().datetime().nullable().default(null).meta({...ir,readOnly:true}),sequence:z$1.number().int().min(1).default(1).meta({...ir,readOnly:true}),base_sequence:z$1.number().int().nullable().default(null).meta({...ir,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":Ba}),jE=le.merge(Ee).merge(Be).merge(ln).extend({handle:rn.meta({...ir,readOnly:true}),active:z$1.boolean().default(true).meta({...ir,readOnly:true})});function nr(n){return jE.meta({id:n,"x-revturbine-schema-persistence":wE,"x-revturbine-schema-exposure":Ba})}var _f=z$1.enum(["info","warning","critical"]).meta({id:"Severity","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":Ba}),FE=z$1.enum(["button","plans_page_ctas","plans_page_full","inline_gate_message","tooltip","in_page_card","usage_counter","credit_counter","trial_counter","banner","modal_optional","modal_blocking","toast","email","sms","push","cli","agent_connector","custom_in_app"]).meta({id:"StudioSurfaceType","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":Ba}),sv=z$1.enum(["open_checkout","view_plans","book_demo","contact_sales","complete_onboarding","invite_teammate","refer_friend","verify_work_email","update_payment_method","enable_auto_renewal","manage_subscription","switch_billing_period","extend_trial","open_rt_placement","dismiss","snooze","custom"]).meta({id:"CtaActionType","x-revturbine-schema-persistence":Or,"x-revturbine-schema-exposure":ps}),Ut={Playbook:"playbook",Branding:"branding",Billing:"billing",Metering:"metering",CustomerOperations:"customer_operations",EventIngestion:"event_ingestion"},Hi={Customer:"customer",Stripe:"stripe",CodeConstant:"code-constant",Runtime:"runtime"},LE="x-revturbine-context",VE="x-revturbine-in-config",UE="x-revturbine-sdk-input",BE="x-revturbine-source",qE="x-revturbine-deprecation",DE={[Ut.Playbook]:Hi.Customer,[Ut.Branding]:Hi.Customer,[Ut.Billing]:Hi.Stripe,[Ut.Metering]:Hi.Customer,[Ut.CustomerOperations]:Hi.Runtime,[Ut.EventIngestion]:Hi.Runtime};function sn(n,e){return {[LE]:n,[VE]:e.inConfig??n===Ut.Playbook,[UE]:e.sdkInput,[BE]:e.source??DE[n]}}function Jp(n){return {deprecated:true,[qE]:{since:n.since,replacement:n.replacement,remove_after:n.removeAfter,reason:n.reason}}}var av={Named:"named",Minted:"minted"},ov="x-revturbine-schema-identity";function Sr(n="handle"){return {[ov]:{kind:av.Named,handleField:n}}}function hi(n="handle"){return {[ov]:{kind:av.Minted,handleField:n}}}var ee=n=>z$1.object({items:z$1.array(n)}),dt=z$1.object({error:z$1.string(),code:z$1.string(),request_id:z$1.string()}),y=n=>n,te=z$1.object({page:z$1.number().int().min(1).default(1).optional(),per_page:z$1.number().int().min(1).max(100).default(25).optional(),sort:z$1.string().optional(),order:z$1.enum(["asc","desc"]).default("asc").optional(),include_deleted:z$1.boolean().default(false).optional()}),{Unrestricted:Ht,Financial:Au}=Pn,{Persisted:Mc,Transient:Fu}=zn,{External:qs}=Fn,ME=sn(Ut.Playbook,{sdkInput:true}),NE=sn(Ut.Playbook,{sdkInput:false}),bf=sn(Ut.Billing,{sdkInput:false}),fa=z$1.enum(["public","unlisted","legacy"]).meta({id:"PlanVisibility","x-revturbine-schema-persistence":Fu,"x-revturbine-schema-exposure":qs}),Nc=z$1.enum(["flat","per_unit","tiered","metered"]).meta({id:"PricingModel","x-revturbine-schema-persistence":Fu,"x-revturbine-schema-exposure":qs}),Lu=z$1.enum(["stripe","static"]).meta({id:"PriceSource","x-revturbine-schema-persistence":Fu,"x-revturbine-schema-exposure":qs}),el=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...Ht,readOnly:true}),name:Bn.meta(Ht),handle:rn.meta(Ht),tier_position:z$1.number().int().min(0).default(0).meta(Ht),sort_order:z$1.number().int().default(0).meta(Ht),visibility:fa.default("public").meta(Ht),metadata:Ln.meta(Ht)}).meta({id:"Plan","x-revturbine-schema-persistence":Mc,"x-revturbine-schema-exposure":qs,...ME,...Sr()}),HE=nr("PlanAnchor"),tl=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...Ht,readOnly:true}),handle:rn.meta({...Ht,readOnly:true}),plan_id:z$1.string().min(1).meta(Ht),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(Ht),segment_id:z$1.string().nullable().default(null).meta(Ht),price_amount:z$1.number().min(0).meta(Au),pricing_model:Nc.meta(Ht),visibility:fa.default("public").meta(Ht),stripe_price_id:z$1.string().optional().meta(Ht),price_source:Lu.default("static").meta(Ht)}).meta({id:"PlanVariation","x-revturbine-schema-persistence":Mc,"x-revturbine-schema-exposure":qs,...bf,...hi()}),zE=nr("PlanVariationAnchor"),nl=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...Ht,readOnly:true}),name:Bn.meta(Ht),handle:rn.meta(Ht),sort_order:z$1.number().int().default(0).meta(Ht),visibility:fa.default("public").meta(Ht),metadata:Ln.meta(Ht)}).meta({id:"AddOn","x-revturbine-schema-persistence":Mc,"x-revturbine-schema-exposure":qs,...NE,...Sr()}),KE=nr("AddOnAnchor"),rl=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...Ht,readOnly:true}),handle:rn.meta({...Ht,readOnly:true}),addon_id:z$1.string().min(1).meta(Ht),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(Ht),segment_id:z$1.string().nullable().default(null).meta(Ht),price_amount:z$1.number().min(0).meta(Au),pricing_model:Nc.meta(Ht),visibility:fa.default("public").meta(Ht),stripe_price_id:z$1.string().optional().meta(Ht),price_source:Lu.default("static").meta(Ht)}).meta({id:"AddOnVariation","x-revturbine-schema-persistence":Mc,"x-revturbine-schema-exposure":qs,...bf,...hi()}),GE=nr("AddOnVariationAnchor"),$E=z$1.enum(["monthly","annual","one_time","custom"]).meta({id:"StripePriceBillingPeriod","x-revturbine-schema-persistence":Fu,"x-revturbine-schema-exposure":qs}),il=le.merge(Ee).merge(Be).extend({stripe_price_id:z$1.string().min(1).meta(Ht),stripe_product_id:z$1.string().min(1).meta(Ht),billing_period:$E.meta(Ht),unit_amount_cents:z$1.number().int().min(0).nullable().default(null).meta(Au),currency:AE.meta(Au),pricing_model:Nc.meta(Ht),nickname:z$1.string().nullable().default(null).meta(Ht),is_mock:z$1.boolean().default(false).meta(Ht),last_updated_from_stripe:An.meta(Ht)}).meta({id:"StripePrice","x-revturbine-schema-persistence":Mc,"x-revturbine-schema-exposure":qs,...bf});var ZE=xr(el),YE=xr(tl),WE=xr(nl),XE=xr(rl),JE=xr(il);({"/api/plan-anchors":{get:y({operationId:"listPlanAnchors",requestParams:{query:te},summary:"List plan anchors (identity registry)",tags:["plans"],responses:{200:{description:"Plan anchor list",content:{"application/json":{schema:ee(HE)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"plan-anchors",persistence:{table:"plans",mode:"list"}}})},"/api/plans":{get:y({operationId:"listPlans",requestParams:{query:te},summary:"List plans",tags:["plans"],responses:{200:{description:"Plan list response",content:{"application/json":{schema:ee(el)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"list"}}}),post:y({operationId:"createPlan",summary:"Create plan",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:yr(el)}}},responses:{201:{description:"Created plan",content:{"application/json":{schema:el}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"create"}}})},"/api/plans/{planId}":{get:y({operationId:"getPlan",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Get plan by ID",tags:["plans"],responses:{200:{description:"Plan detail",content:{"application/json":{schema:el}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"get"}}}),patch:y({operationId:"updatePlan",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Update plan",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:ZE}}},responses:{200:{description:"Updated plan",content:{"application/json":{schema:el}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"update"}}}),delete:y({operationId:"deletePlan",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Delete plan",tags:["plans"],responses:{204:{description:"Plan deleted"},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"delete"}}})},"/api/plans/reorder":{post:y({operationId:"reorderPlans",summary:"Reorder plans",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({ids:z$1.array(z$1.string())})}}},responses:{200:{description:"Reordered"}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"reorder"}}})},"/api/plan-variation-anchors":{get:y({operationId:"listPlanVariationAnchors",requestParams:{query:te},summary:"List plan variation anchors (identity registry)",tags:["plans"],responses:{200:{description:"Plan variation anchor list",content:{"application/json":{schema:ee(zE)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"plan-variation-anchors",persistence:{table:"planVariations",mode:"list"}}})},"/api/plans/{planId}/variations":{get:y({operationId:"listPlanVariations",requestParams:{path:z$1.object({planId:z$1.string()}),query:te},summary:"List plan variations",tags:["plans"],responses:{200:{description:"Plan variations",content:{"application/json":{schema:ee(tl)}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"list"}}}),post:y({operationId:"createPlanVariation",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Create plan variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:yr(tl)}}},responses:{201:{description:"Created plan variation",content:{"application/json":{schema:tl}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"create"}}})},"/api/plan-variations/{variationId}":{get:y({operationId:"getPlanVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Get plan variation by ID",tags:["plans"],responses:{200:{description:"Plan variation detail",content:{"application/json":{schema:tl}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"get"}}}),patch:y({operationId:"updatePlanVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Update plan variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:YE}}},responses:{200:{description:"Updated plan variation",content:{"application/json":{schema:tl}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"update"}}}),delete:y({operationId:"deletePlanVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Delete plan variation",tags:["plans"],responses:{204:{description:"Plan variation deleted"}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"delete"}}})},"/api/addon-anchors":{get:y({operationId:"listAddOnAnchors",requestParams:{query:te},summary:"List add-on anchors (identity registry)",tags:["plans"],responses:{200:{description:"Add-on anchor list",content:{"application/json":{schema:ee(KE)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"addon-anchors",persistence:{table:"addons",mode:"list"}}})},"/api/addons":{get:y({operationId:"listAddOns",requestParams:{query:te},summary:"List add-ons",tags:["plans"],responses:{200:{description:"Add-on list",content:{"application/json":{schema:ee(nl)}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"list"}}}),post:y({operationId:"createAddOn",summary:"Create add-on",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:yr(nl)}}},responses:{201:{description:"Created add-on",content:{"application/json":{schema:nl}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"create"}}})},"/api/addons/{addonId}":{get:y({operationId:"getAddOn",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Get add-on by ID",tags:["plans"],responses:{200:{description:"Add-on detail",content:{"application/json":{schema:nl}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"get"}}}),patch:y({operationId:"updateAddOn",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Update add-on",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:WE}}},responses:{200:{description:"Updated add-on",content:{"application/json":{schema:nl}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"update"}}}),delete:y({operationId:"deleteAddOn",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Delete add-on",tags:["plans"],responses:{204:{description:"Add-on deleted"}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"delete"}}})},"/api/addon-variation-anchors":{get:y({operationId:"listAddOnVariationAnchors",requestParams:{query:te},summary:"List add-on variation anchors (identity registry)",tags:["plans"],responses:{200:{description:"Add-on variation anchor list",content:{"application/json":{schema:ee(GE)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"addon-variation-anchors",persistence:{table:"addonVariations",mode:"list"}}})},"/api/addons/{addonId}/variations":{get:y({operationId:"listAddOnVariations",requestParams:{path:z$1.object({addonId:z$1.string()}),query:te},summary:"List add-on variations",tags:["plans"],responses:{200:{description:"Add-on variations",content:{"application/json":{schema:ee(rl)}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"list"}}}),post:y({operationId:"createAddOnVariation",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Create add-on variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:yr(rl)}}},responses:{201:{description:"Created variation",content:{"application/json":{schema:rl}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"create"}}})},"/api/addon-variations/{variationId}":{get:y({operationId:"getAddOnVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Get add-on variation by ID",tags:["plans"],responses:{200:{description:"Add-on variation detail",content:{"application/json":{schema:rl}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"get"}}}),patch:y({operationId:"updateAddOnVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Update add-on variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:XE}}},responses:{200:{description:"Updated variation",content:{"application/json":{schema:rl}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"update"}}}),delete:y({operationId:"deleteAddOnVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Delete add-on variation",tags:["plans"],responses:{204:{description:"Variation deleted"}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"delete"}}})},"/api/stripe-prices":{get:y({operationId:"listStripePrices",requestParams:{query:te},summary:"List Stripe prices",tags:["plans"],responses:{200:{description:"Stripe price list",content:{"application/json":{schema:ee(il)}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"list"}}}),post:y({operationId:"createStripePrice",summary:"Create Stripe price",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:yr(il)}}},responses:{201:{description:"Created Stripe price",content:{"application/json":{schema:il}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"create"}}})},"/api/stripe-prices/{id}":{get:y({operationId:"getStripePrice",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Get Stripe price by ID",tags:["plans"],responses:{200:{description:"Stripe price detail",content:{"application/json":{schema:il}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"get"}}}),patch:y({operationId:"updateStripePrice",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Update Stripe price",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:JE}}},responses:{200:{description:"Updated Stripe price",content:{"application/json":{schema:il}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"update"}}}),delete:y({operationId:"deleteStripePrice",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Delete Stripe price",tags:["plans"],responses:{204:{description:"Stripe price deleted"}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"delete"}}})}});var {Unrestricted:_e}=Pn,{Persisted:vf,Transient:si}=zn,{Internal:lv,External:Gr}=Fn,cv=sn(Ut.Playbook,{sdkInput:true}),QE=sn(Ut.Playbook,{inConfig:false,sdkInput:false}),dv=z$1.enum(["per_month","per_year","per_billing_period","lifetime","concurrent","per_instance","per_second","per_minute","per_hour","per_6_hours","per_day","per_week"]).meta({id:"UsagePeriodScope","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr}),Vu=z$1.enum(["account_pool","per_instance","per_user","per_user_pooled"]).meta({id:"UsageAllocation","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr}),ew=z$1.enum(iv).meta({id:"EntitlementGrantStatus","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr}),tw=z$1.enum(["rule","user_context","override"]).meta({id:"EntitlementGrantSource","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr}),uv=z$1.enum(["hard_block","soft_block","degrade","allow_overage"]).meta({id:"EnforcementMode","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr}),qc=z$1.object({entitlement_id:z$1.string().min(1).meta(_e),entitlement_handle:z$1.string().min(1).meta(_e),status:ew.meta(_e),limit:z$1.number().optional().meta(_e),used:z$1.number().optional().meta(_e),allocation:Vu.optional().meta(_e),enforcement:uv.optional().meta(_e),source:tw.optional().meta(_e),plan_id:z$1.string().optional().meta(_e),segment_id:z$1.string().optional().meta(_e),seat_type_id:z$1.string().optional().meta(_e),rule_id:z$1.string().optional().meta(_e)}).meta({id:"EntitlementGrant","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr,...Pn.Operational});z$1.object({account:z$1.record(z$1.string(),qc).optional().meta(_e),instance:z$1.record(z$1.string(),qc).optional().meta(_e),user:z$1.record(z$1.string(),qc).optional().meta(_e)}).meta({id:"EntitlementGrantSet","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr,...Pn.Operational});var nw=z$1.enum(["public","non_public"]).meta({id:"RuleVisibility","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr}),rw=z$1.enum(["plan","plan_variation","addon","addon_variation"]).meta({id:"EntitlementRuleTargetKind","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr}),mv=z$1.object({kind:rw.meta(_e),id:z$1.string().min(1).meta(_e)}).meta({id:"EntitlementRuleTarget","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr}),iw=z$1.enum(["month","day","week","quarter","year","billing_period","hour","six_hours"]).meta({id:"EntitlementRulePeriodUnit","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr}),sl=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({..._e,readOnly:true}),name:Bn.meta(_e),handle:rn.meta(_e),customer_facing_description:z$1.string().max(500).optional().meta(_e),type:gf.meta(_e),unit:z$1.string().max(100).optional().meta(_e),period_scope:dv.optional().meta(_e),allocation:Vu.optional().meta(_e),tier_definitions:z$1.array(z$1.object({name:z$1.string(),handle:z$1.string(),description:z$1.string().optional()})).optional().meta(_e),sort_order:z$1.number().int().default(0).meta(_e),metadata:Ln.meta(_e)}).meta({id:"Entitlement","x-revturbine-schema-persistence":vf,"x-revturbine-schema-exposure":Gr,...cv,...Sr()}),sw=nr("EntitlementAnchor"),cl=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({..._e,readOnly:true}),handle:rn.meta({..._e,readOnly:true}),entitlement_id:z$1.string().min(1).meta(_e),targets:z$1.array(mv).min(1).meta(_e),segment_ids:z$1.array(z$1.string()).default([]).meta(_e),visibility:nw.default("public").meta(_e),period_scope:dv.optional().meta(_e),instance:z$1.string().max(100).optional().meta(_e),reset_period:iw.optional().meta(_e),limit_value:z$1.union([z$1.number(),z$1.literal("unlimited")]).optional().meta(_e),enforcement:uv.optional().meta(_e),warning_threshold_percent:Bc.optional().meta(_e),overage_price_ref:z$1.string().optional().meta(_e),grace_period_hours:z$1.number().int().min(0).optional().meta(_e),tier_value:z$1.string().optional().meta(_e),rate_value:z$1.number().optional().meta(_e),initial_grant:z$1.number().optional().meta(_e),allowance_value:z$1.union([z$1.number(),z$1.literal("unlimited")]).optional().meta(_e),rollover_enabled:z$1.boolean().optional().meta(_e),max_balance:z$1.union([z$1.number(),z$1.literal("unlimited")]).nullable().default(null).meta(_e),seat_type_id:z$1.string().optional().meta(_e),included_count:z$1.union([z$1.number().int(),z$1.literal("unlimited")]).optional().meta(_e),at_limit_behavior:z$1.enum(["hard_cap","auto_upgrade_at_renewal"]).optional().meta(_e),stripe_metered_price_id:z$1.string().optional().meta(_e),enabled:z$1.boolean().optional().meta(_e),allocation:Vu.optional().meta(_e),max_seats:z$1.union([z$1.number(),z$1.literal("unlimited")]).nullable().optional().meta(_e),amount_cents:z$1.number().int().optional().meta(_e),currency:z$1.string().optional().meta(_e)}).meta({id:"EntitlementRule","x-revturbine-schema-persistence":vf,"x-revturbine-schema-exposure":lv,...cv,...hi()}),aw=nr("EntitlementRuleAnchor");cl.superRefine((n,e)=>{n.reset_period==="billing_period"&&n.targets.findIndex(s=>s.kind!=="plan_variation"&&s.kind!=="addon_variation")!==-1&&e.addIssue({code:"custom",path:["reset_period"],params:{code:"billing_period_target_mismatch"},message:"reset_period='billing_period' requires all targets to be plan_variation or addon_variation"});let t=n.allowance_value;(t==="unlimited"||typeof t=="number"&&t>0)&&n.reset_period==null&&e.addIssue({code:"custom",path:["reset_period"],params:{code:"allowance_requires_reset_period"},message:"a non-zero credits allowance_value requires a reset_period (the per-period refill cadence)"});});var ow=z$1.enum(["one_time_period_mismatch"]).meta({id:"EntitlementRuleWarningCode","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr}),lw=z$1.object({code:ow.meta(_e),message:z$1.string().min(1).meta(_e),path:z$1.array(z$1.union([z$1.string(),z$1.number().int()])).optional().meta(_e)}).meta({id:"EntitlementRuleWarning","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr}),Qp=cl.extend({warnings:z$1.array(lw).optional().meta(_e)}).meta({id:"EntitlementRuleWriteResponse","x-revturbine-schema-persistence":si,"x-revturbine-schema-exposure":Gr});var ef=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({handle:rn.meta({..._e,readOnly:true}),rule_id:z$1.string().min(1).meta(_e),experiment_id:z$1.string().min(1).meta(_e),variant_name:z$1.string().min(1).max(200).meta(_e),is_control:z$1.boolean().default(false).meta(_e),override_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(_e)}).meta({id:"EntitlementRuleVariant","x-revturbine-schema-persistence":vf,"x-revturbine-schema-exposure":lv,...QE,...hi()}),cw=xr(sl),dw=xr(cl);({"/api/entitlement-anchors":{get:y({operationId:"listEntitlementAnchors",requestParams:{query:te},summary:"List entitlement anchors (identity registry)",tags:["entitlements"],responses:{200:{description:"Entitlement anchor list",content:{"application/json":{schema:ee(sw)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"entitlement-anchors",persistence:{table:"entitlements",mode:"list"}}})},"/api/entitlement-rule-anchors":{get:y({operationId:"listEntitlementRuleAnchors",requestParams:{query:te},summary:"List entitlement rule anchors (identity registry)",tags:["entitlements"],responses:{200:{description:"Entitlement rule anchor list",content:{"application/json":{schema:ee(aw)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"entitlement-rule-anchors",persistence:{table:"entitlementRules",mode:"list"}}})},"/api/entitlements":{get:y({operationId:"listEntitlements",requestParams:{query:te},summary:"List entitlements",tags:["entitlements"],responses:{200:{description:"Entitlement list",content:{"application/json":{schema:ee(sl)}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"list"}}}),post:y({operationId:"createEntitlement",summary:"Create entitlement",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:yr(sl)}}},responses:{201:{description:"Created",content:{"application/json":{schema:sl}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"create"}}})},"/api/entitlements/{entitlementId}":{get:y({operationId:"getEntitlement",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Get entitlement",tags:["entitlements"],responses:{200:{description:"Entitlement detail",content:{"application/json":{schema:sl}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"get"}}}),patch:y({operationId:"updateEntitlement",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Update entitlement",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:cw}}},responses:{200:{description:"Updated",content:{"application/json":{schema:sl}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"update"}}}),delete:y({operationId:"deleteEntitlement",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Delete entitlement",tags:["entitlements"],responses:{204:{description:"Deleted"},default:{description:"Error",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"delete"}}})},"/api/entitlements/{entitlementId}/rules":{get:y({operationId:"listEntitlementRules",requestParams:{path:z$1.object({entitlementId:z$1.string()}),query:te},summary:"List rules for entitlement",tags:["entitlements"],responses:{200:{description:"Rule list",content:{"application/json":{schema:ee(cl)}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"list"}}}),post:y({operationId:"createEntitlementRule",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Create entitlement rule",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:yr(cl)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Qp}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"create"}}})},"/api/entitlement-rules/{ruleId}":{patch:y({operationId:"updateEntitlementRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Update entitlement rule",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:dw}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Qp}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"update"}}}),delete:y({operationId:"deleteEntitlementRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Delete entitlement rule",tags:["entitlements"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"delete"}}})},"/api/entitlement-rules/{ruleId}/duplicate":{post:y({operationId:"duplicateEntitlementRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Duplicate entitlement rule",tags:["entitlements"],responses:{201:{description:"Duplicated",content:{"application/json":{schema:Qp}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"duplicate"}}})},"/api/entitlement-rules/{ruleId}/variants":{get:y({operationId:"listEntitlementRuleVariants",requestParams:{path:z$1.object({ruleId:z$1.string()}),query:te},summary:"List A/B variants for rule",tags:["entitlements"],responses:{200:{description:"Variant list",content:{"application/json":{schema:ee(ef)}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rule-variants",persistence:{table:"entitlementRuleVariants",mode:"list"}}}),post:y({operationId:"createEntitlementRuleVariant",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Create rule A/B variant",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:yr(ef)}}},responses:{201:{description:"Created",content:{"application/json":{schema:ef}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rule-variants",persistence:{table:"entitlementRuleVariants",mode:"create"}}})}});var {Unrestricted:Te}=Pn,{Persisted:Hc,Transient:ha}=zn,{External:ki,Internal:uw}=Fn,pv=sn(Ut.Playbook,{sdkInput:true}),mw=sn(Ut.Playbook,{inConfig:false,sdkInput:false}),pw=sn(Ut.Playbook,{inConfig:false,sdkInput:true}),fw=sn(Ut.Playbook,{inConfig:false,sdkInput:false,source:Hi.Runtime}),hw=z$1.enum(["none_always_on","overage_vs_upgrade","time_bound","payment_failed","payment_at_risk"]);var fv=z$1.enum(["fixed","gated_feature","usage_limit","trial","other_conversion","retention"]).meta({id:"PlacementCategory","x-revturbine-schema-persistence":ha,"x-revturbine-schema-exposure":ki}),hv=z$1.enum(["session","day","week","month","lifetime"]).meta({id:"CapPeriod","x-revturbine-schema-persistence":ha,"x-revturbine-schema-exposure":ki}),gw=z$1.object({count:z$1.number().int().positive().meta(Te),period:hv.meta(Te)}).meta({id:"PlacementCapRule","x-revturbine-schema-persistence":ha,"x-revturbine-schema-exposure":ki});z$1.object({surface_type:z$1.string().min(1).meta(Te),rules:z$1.array(gw).meta(Te),cooldown_ms:z$1.number().int().nonnegative().optional().meta(Te)}).meta({id:"SurfaceTypeCapRule","x-revturbine-schema-persistence":Hc,"x-revturbine-schema-exposure":ki,...Pn.Operational,...pw});var _w=z$1.enum(["open_checkout","view_plans","book_demo","contact_sales","complete_onboarding","invite_teammate","refer_friend","verify_work_email","update_payment_method","enable_auto_renewal","manage_subscription","switch_billing_period","extend_trial","open_rt_placement","dismiss","snooze","custom"]).meta({id:"CtaPathType","x-revturbine-schema-persistence":ha,"x-revturbine-schema-exposure":ki}),ol=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...Te,readOnly:true}),name:Bn.meta(Te),handle:rn.meta(Te),description:qa.meta(Te),category:fv.meta(Te),drag_order_in_category:z$1.number().int().default(0).meta(Te),surface_slot_id:z$1.string().optional().meta(Te),entitlement_id:z$1.string().optional().meta(Te),tier_threshold:z$1.string().optional().meta(Te),threshold_percent:Bc.optional().meta(Te),trial_type:z$1.enum(["free","reverse"]).optional().meta(Te),trigger_type:z$1.string().optional().meta(Te),trial_progress_percent:z$1.number().min(0).max(100).optional().meta(Te),days_before_end:z$1.number().int().min(0).optional().meta(Te),qualifier:hw.optional().meta(Te),activation_window_start:z$1.string().datetime().optional().meta(Te),activation_window_end:z$1.string().datetime().optional().meta(Te),metadata:Ln.meta(Te)}).meta({id:"Placement","x-revturbine-schema-persistence":Hc,"x-revturbine-schema-exposure":ki,...pv,...Sr()}),bw=nr("PlacementAnchor"),vw=z$1.enum(["threshold_not_emitted"]).meta({id:"PlacementWarningCode","x-revturbine-schema-persistence":ha,"x-revturbine-schema-exposure":ki}),yw=z$1.object({code:vw.meta(Te),message:z$1.string().min(1).meta(Te),path:z$1.array(z$1.union([z$1.string(),z$1.number().int()])).optional().meta(Te)}).meta({id:"PlacementWarning","x-revturbine-schema-persistence":ha,"x-revturbine-schema-exposure":ki}),$b=ol.extend({warnings:z$1.array(yw).optional().meta(Te)}).meta({id:"PlacementWriteResponse","x-revturbine-schema-persistence":ha,"x-revturbine-schema-exposure":ki});var xw=z$1.object({label:z$1.string().min(1).max(200).meta(Te),cta_path_type:_w.meta(Te),config_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Te)}).meta({id:"CtaObject","x-revturbine-schema-persistence":ha,"x-revturbine-schema-exposure":ki}),Vc=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...Te,readOnly:true}),handle:rn.meta({...Te,readOnly:true}),placement_id:z$1.string().min(1).meta(Te),drag_order:z$1.number().int().default(0).meta(Te),target_plan_ids:z$1.array(z$1.string()).default([]).meta(Te),target_plan_billing_cadences:z$1.array(z$1.string()).default([]).meta(Te),target_segments:z$1.array(z$1.string()).default([]).meta(Te),surface_slot_ids:z$1.array(z$1.string()).default([]).meta(Te),surface_template_id:z$1.string().min(1).meta(Te),content_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Te),cta_list:z$1.array(xw).default([]).meta(Te),max_per_period:z$1.number().int().min(0).nullable().default(null).meta(Te),max_period_unit:hv.default("session").meta(Te),cooldown_after_dismiss_days:z$1.number().int().min(0).default(7).meta(Te),remind_later_minutes:z$1.number().int().min(0).nullable().default(null).meta(Te),recommendation_strategy:z$1.enum(["next_tier_up","best_value","custom"]).optional().default("next_tier_up").meta(Te),recommendation_plan_override:z$1.string().optional().meta(Te)}).meta({id:"PlacementPayload","x-revturbine-schema-persistence":Hc,"x-revturbine-schema-exposure":ki,...pv,...hi()}),Sw=nr("PlacementPayloadAnchor");le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({handle:rn.meta({...Te,readOnly:true}),placement_payload_id:z$1.string().min(1).meta(Te),experiment_id:z$1.string().min(1).meta(Te),variant_name:z$1.string().min(1).max(200).meta(Te),is_control:z$1.boolean().default(false).meta(Te),traffic_allocation_percent:z$1.number().min(0).max(100).meta(Te),override_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Te),status:z$1.enum(["active","paused","complete"]).default("active").meta(Te)}).meta({id:"PlacementVariant","x-revturbine-schema-persistence":Hc,"x-revturbine-schema-exposure":uw,...mw,...hi()});var Iw=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({surface_slot_handle:z$1.string().min(1).max(200).meta(Te),surface_type:ju.meta(Te),surface_template_ids:z$1.array(z$1.string()).default([]).meta(Te),surface_slot_category:z$1.enum(["fixed","gated","triggered"]).default("fixed").meta(Te),first_seen:z$1.string().datetime().meta({...Te,readOnly:true}),last_seen:z$1.string().datetime().meta({...Te,readOnly:true}),status:z$1.enum(["active","inactive","new"]).default("new").meta(Te),placement_count:z$1.number().int().min(0).default(0).meta({...Te,readOnly:true})}).meta({id:"SurfaceSlot","x-revturbine-schema-persistence":Hc,"x-revturbine-schema-exposure":ki,...fw,...Sr("surface_slot_handle")}),Pw=xr(ol),Tw=xr(Vc);({"/api/placement-anchors":{get:y({operationId:"listPlacementAnchors",requestParams:{query:te},summary:"List placement anchors (identity registry)",tags:["placements"],responses:{200:{description:"Placement anchor list",content:{"application/json":{schema:ee(bw)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-anchors",persistence:{table:"placements",mode:"list"}}})},"/api/placements":{get:y({operationId:"listPlacements",requestParams:{query:te},summary:"List placements",tags:["placements"],responses:{200:{description:"Placement list",content:{"application/json":{schema:ee(ol)}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"list"}}}),post:y({operationId:"createPlacement",summary:"Create placement",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:yr(ol)}}},responses:{201:{description:"Created",content:{"application/json":{schema:$b}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"create"}}})},"/api/placements/{placementId}":{get:y({operationId:"getPlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Get placement",tags:["placements"],responses:{200:{description:"Placement detail",content:{"application/json":{schema:ol}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"get"}}}),patch:y({operationId:"updatePlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Update placement",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:Pw}}},responses:{200:{description:"Updated",content:{"application/json":{schema:$b}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"update"}}}),delete:y({operationId:"deletePlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Delete placement",tags:["placements"],responses:{204:{description:"Deleted"},default:{description:"Error",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"delete"}}})},"/api/placements/{placementId}/duplicate":{post:y({operationId:"duplicatePlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Duplicate placement",tags:["placements"],responses:{201:{description:"Duplicated",content:{"application/json":{schema:ol}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"duplicate"}}})},"/api/placements/reorder":{post:y({operationId:"reorderPlacements",summary:"Reorder placements within category",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({category:fv,ids:z$1.array(z$1.string())})}}},responses:{200:{description:"Reordered"}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"reorder"}}})},"/api/placement-payload-anchors":{get:y({operationId:"listPlacementPayloadAnchors",requestParams:{query:te},summary:"List placement payload anchors (identity registry)",tags:["placements"],responses:{200:{description:"Placement payload anchor list",content:{"application/json":{schema:ee(Sw)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-payload-anchors",persistence:{table:"placementPayloads",mode:"list"}}})},"/api/placements/{placementId}/payloads":{get:y({operationId:"listPlacementPayloads",requestParams:{path:z$1.object({placementId:z$1.string()}),query:te},summary:"List placement payloads",tags:["placements"],responses:{200:{description:"Payload list",content:{"application/json":{schema:ee(Vc)}}}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"list"}}}),post:y({operationId:"createPlacementPayload",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Create placement payload",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:yr(Vc)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Vc}}}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"create"}}})},"/api/placement-payloads/{payloadId}":{patch:y({operationId:"updatePlacementPayload",requestParams:{path:z$1.object({payloadId:z$1.string()})},summary:"Update placement payload",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:Tw}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Vc}}}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"update"}}}),delete:y({operationId:"deletePlacementPayload",requestParams:{path:z$1.object({payloadId:z$1.string()})},summary:"Delete placement payload",tags:["placements"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"delete"}}})},"/api/surface-slots":{get:y({operationId:"listSurfaceSlots",requestParams:{query:te},summary:"List auto-discovered surface slots",tags:["placements"],responses:{200:{description:"Surface slot list",content:{"application/json":{schema:ee(Iw)}}}},"x-revturbine-operation":{exposure:"external",resource:"surface-slots",persistence:{table:"surfaceSlots",mode:"list"}}})}});var {Unrestricted:vr,Pii:dl}=Pn,{Persisted:yf,Transient:xf}=zn,{Internal:ml}=Fn,Cw=sn(Ut.CustomerOperations,{sdkInput:false}),kw=z$1.object({external_id:z$1.string().min(1).meta(dl),traits:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(dl),plan_id:z$1.string().optional().meta(vr)}).meta({id:"Identity","x-revturbine-schema-persistence":yf,"x-revturbine-schema-exposure":ml}),gv=z$1.enum(["payment_failed","payment_method_missing"]),Zb=le.merge(Ee).merge(Be).extend({external_id:z$1.string().min(1).meta(dl),identity:kw.meta(dl),stripe_customer_id:z$1.string().optional().meta(vr),current_plan_id:z$1.string().optional().meta(vr),subscription_status:z$1.enum(["active","past_due","canceled","trialing","unpaid","none"]).default("none").meta(vr),status:z$1.enum(["active","churned","trial","suspended"]).default("active").meta(vr),billing_health_issues:z$1.array(gv).default([]).meta(vr),metadata:Ln.meta(vr)}).meta({id:"Customer","x-revturbine-schema-persistence":yf,"x-revturbine-schema-exposure":ml}),Rw=z$1.enum(["permanent","for_duration"]).meta({id:"CustomerOverrideDuration","x-revturbine-schema-persistence":xf,"x-revturbine-schema-exposure":ml}),Ew=z$1.enum(["grant_plan","grant_addon","grant_entitlement"]).meta({id:"CustomerOverrideType","x-revturbine-schema-persistence":xf,"x-revturbine-schema-exposure":ml}),ww=z$1.enum(["active","expired","revoked"]).meta({id:"CustomerOverrideStatus","x-revturbine-schema-persistence":xf,"x-revturbine-schema-exposure":ml}),da=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({handle:rn.meta({...vr,readOnly:true}),customer_id:z$1.string().min(1).meta(dl),customer_id_list:z$1.array(z$1.string()).optional().meta(dl),override_type:Ew.meta(vr),target_id:z$1.string().min(1).meta(vr),value:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(vr),duration_type:Rw.default("permanent").meta(vr),duration_value:z$1.string().optional().meta(vr),expiry_date:An.meta(vr),status:ww.default("active").meta(vr),reason:z$1.string().max(500).optional().meta(vr),created_by:z$1.string().optional().meta(vr)}).meta({id:"CustomerOverride","x-revturbine-schema-persistence":yf,"x-revturbine-schema-exposure":ml,...Cw,...hi()});({"/api/customers":{get:y({operationId:"listCustomers",requestParams:{query:te},summary:"List customers",tags:["customers"],responses:{200:{description:"Customer list",content:{"application/json":{schema:ee(Zb)}}}},"x-revturbine-operation":{exposure:"internal",resource:"customers",persistence:{table:"customers",mode:"list"}}})},"/api/customers/{customerId}":{get:y({operationId:"getCustomer",requestParams:{path:z$1.object({customerId:z$1.string()})},summary:"Get customer by ID",tags:["customers"],responses:{200:{description:"Customer",content:{"application/json":{schema:Zb}}}},"x-revturbine-operation":{exposure:"internal",resource:"customers",persistence:{table:"customers",mode:"get"}}})},"/api/customer-overrides":{get:y({operationId:"listCustomerOverrides",requestParams:{query:te},summary:"List customer overrides",tags:["customers"],responses:{200:{description:"Override list",content:{"application/json":{schema:ee(da)}}}},"x-revturbine-operation":{exposure:"internal",resource:"customer-overrides",persistence:{table:"customerOverrides",mode:"list"}}})},"/api/customer-overrides/{overrideId}":{get:y({operationId:"getCustomerOverride",requestParams:{path:z$1.object({overrideId:z$1.string()})},summary:"Get customer override",tags:["customers"],responses:{200:{description:"Override",content:{"application/json":{schema:da}}}},"x-revturbine-operation":{exposure:"internal",resource:"customer-overrides",persistence:{table:"customerOverrides",mode:"get"}}}),patch:y({operationId:"updateCustomerOverride",requestParams:{path:z$1.object({overrideId:z$1.string()})},summary:"Update customer override",tags:["customers"],requestBody:{required:true,content:{"application/json":{schema:da.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:da}}}},"x-revturbine-operation":{exposure:"internal",resource:"customer-overrides",persistence:{table:"customerOverrides",mode:"update"}}}),delete:y({operationId:"deleteCustomerOverride",requestParams:{path:z$1.object({overrideId:z$1.string()})},summary:"Delete customer override",tags:["customers"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"customer-overrides",persistence:{table:"customerOverrides",mode:"delete"}}})},"/api/customer-overrides/{overrideId}/revoke":{post:y({operationId:"revokeCustomerOverride",requestParams:{path:z$1.object({overrideId:z$1.string()})},summary:"Revoke an active customer override",tags:["customers"],responses:{200:{description:"Revoked",content:{"application/json":{schema:da}}}},"x-revturbine-operation":{exposure:"internal",resource:"customer-overrides",persistence:{table:"customerOverrides",mode:"update"}}})},"/api/customer-overrides/{overrideId}/duplicate":{post:y({operationId:"duplicateCustomerOverride",requestParams:{path:z$1.object({overrideId:z$1.string()})},summary:"Duplicate customer override for another customer",tags:["customers"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({customer_id:z$1.string()})}}},responses:{201:{description:"Duplicated",content:{"application/json":{schema:da}}}},"x-revturbine-operation":{exposure:"internal",resource:"customer-overrides",persistence:{table:"customerOverrides",mode:"create"}}})}});var {Unrestricted:Ae,Pii:Uc,Financial:tf}=Pn,{Persisted:_v,Transient:fs}=zn,{External:pl,Internal:zc}=Fn,Sf=z$1.object({in_trial:z$1.boolean().meta(Ae),trial_type:z$1.string().optional().meta(Ae),plan_handle:z$1.string().optional().meta(Ae),state:z$1.enum(["active","running_out","expired","converted","none"]).optional().meta(Ae),trial_limit_type:z$1.enum(["time","usage"]).optional().meta(Ae),progress_percent:z$1.number().min(0).max(100).optional().meta(Ae),day_number:z$1.number().int().min(0).optional().meta(Ae),days_remaining:z$1.number().int().min(0).optional().meta(Ae),usage_entitlement_handle:z$1.string().optional().meta(Ae),usage_consumed:z$1.number().int().min(0).optional().meta(Ae),usage_remaining:z$1.number().int().min(0).optional().meta(Ae),usage_limit:z$1.number().int().min(0).optional().meta(Ae)}).meta({id:"UserTrialStatus","x-revturbine-schema-persistence":fs,"x-revturbine-schema-exposure":pl}),bv=z$1.object({entitlement_handle:z$1.string().min(1).meta(Ae),unit:z$1.string().min(1).meta(Ae),amount:z$1.number().min(0).meta(Ae),limit:z$1.number().min(0).optional().meta(Ae),reset_date:z$1.string().optional().meta(Ae)}).meta({id:"UserUsageEntry","x-revturbine-schema-persistence":fs,"x-revturbine-schema-exposure":pl});z$1.enum(["new","high","medium","low","inactive"]).meta({id:"ActivityLevel","x-revturbine-schema-persistence":fs,"x-revturbine-schema-exposure":pl});var vv=z$1.object({id:z$1.string().min(1).meta(Ae),name:z$1.string().min(1).meta(Ae),price:z$1.string().optional().meta(Ae),billing_period:z$1.enum(["monthly","annual","none"]).optional().meta(Ae)}).meta({id:"UserPlanContext","x-revturbine-schema-persistence":fs,"x-revturbine-schema-exposure":pl}),Ow=z$1.object({product_instance_id:z$1.string().min(1).meta(Ae),user_id:z$1.string().min(1).meta(Uc),plan:vv.optional().meta(Ae),usage:z$1.record(z$1.string(),bv).default({}).meta(Ae),trial:Sf.optional().meta(Ae),entitlements:z$1.record(z$1.string(),z$1.union([z$1.boolean(),qc])).default({}).meta(Ae)}).meta({id:"UserInstanceContext","x-revturbine-schema-persistence":_v,"x-revturbine-schema-exposure":pl}),Zo=le.merge(Be).merge(Ee).extend({user_id:z$1.string().min(1).meta(Uc),account_id:z$1.string().min(1).nullable().optional().meta(Uc),email:z$1.string().email().nullable().optional().meta(Uc),email_type:z$1.string().optional().meta(Ae),plan:vv.optional().meta(Ae),usage:z$1.record(z$1.string(),bv).default({}).meta(Ae),trial:Sf.optional().meta(Ae),payment_failed:z$1.boolean().optional().meta(Ae),payment_at_risk:z$1.boolean().optional().meta(Ae),tiers:z$1.record(z$1.string(),z$1.string()).optional().meta(Ae),entitlements:z$1.record(z$1.string(),z$1.union([z$1.boolean(),qc])).default({}).meta(Ae),instances:z$1.array(Ow).optional().meta(Ae),custom:z$1.record(z$1.string(),z$1.union([z$1.string(),z$1.number(),z$1.boolean(),z$1.null()])).default({}).meta(Uc),personalization:z$1.record(z$1.string(),z$1.union([z$1.string(),z$1.number()])).default({}).meta({...Ae,"x-revturbine-schema-persistence":fs}),derived_config_version:z$1.string().nullable().optional().meta(Ae),context_hash:z$1.string().nullable().optional().meta(Ae),derived_computed_at:An.meta(Ae),activity_score:z$1.number().int().min(0).nullable().optional().meta(Ae),activity_score_computed_at:z$1.string().datetime().nullable().optional().meta(Ae),experiments:z$1.record(z$1.string(),z$1.string()).optional().meta(Ae)}).meta({id:"UserContext","x-revturbine-schema-persistence":_v,"x-revturbine-schema-exposure":pl}),Aw=z$1.object({status:z$1.enum(["active","running_out","expired","converted","none"]).meta({...Ae,...ii}),days_remaining:z$1.number().int().min(0).optional().meta({...Ae,...ii}),ends_at:z$1.string().optional().meta({...Ae,...ii})}).meta({id:"ClientContextTrial","x-revturbine-schema-persistence":fs,"x-revturbine-schema-exposure":zc}),jw=z$1.object({health:z$1.enum(["ok","attention_required"]).optional().meta({...Ae,...ii}),failed_payment_reason:z$1.string().optional().meta({...tf,...Gb}),issues:z$1.array(gv).optional().meta({...tf,...Gb}),provider_subscription_id:z$1.string().optional().meta({...tf,...EE})}).meta({id:"ClientContextBilling","x-revturbine-schema-persistence":fs,"x-revturbine-schema-exposure":zc}),Fw=z$1.object({can_upgrade:z$1.boolean().optional().meta({...Ae,...ii}),can_manage_billing:z$1.boolean().optional().meta({...Ae,...ii})}).meta({id:"ClientContextCapabilities","x-revturbine-schema-persistence":fs,"x-revturbine-schema-exposure":zc}),Lw=z$1.object({handle:z$1.string().min(1).optional().meta({...Ae,...ii}),name:z$1.string().min(1).optional().meta({...Ae,...ii})}).meta({id:"ClientContextPlan","x-revturbine-schema-persistence":fs,"x-revturbine-schema-exposure":zc});z$1.object({subject:z$1.string().min(1).meta({...Ae,...ii}),context_version:z$1.string().optional().meta({...Ae,...ii}),trial:Aw.optional().meta({...Ae,...ii}),billing:jw.optional().meta({...Ae,...ii}),plan:Lw.optional().meta({...Ae,...ii}),capabilities:Fw.optional().meta({...Ae,...ii})}).meta({id:"ClientContext","x-revturbine-schema-persistence":fs,"x-revturbine-schema-exposure":zc});({"/api/user-contexts":{get:y({operationId:"listUserContexts",requestParams:{query:te},summary:"List user contexts",tags:["users"],responses:{200:{description:"User context list",content:{"application/json":{schema:ee(Zo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"user-contexts",persistence:{table:"userContexts",mode:"list"}}})},"/api/user-contexts/{userContextId}":{get:y({operationId:"getUserContext",requestParams:{path:z$1.object({userContextId:z$1.string()})},summary:"Get user context",tags:["users"],responses:{200:{description:"User context",content:{"application/json":{schema:Zo}}}},"x-revturbine-operation":{exposure:"internal",resource:"user-contexts",persistence:{table:"userContexts",mode:"get"}}}),patch:y({operationId:"updateUserContext",requestParams:{path:z$1.object({userContextId:z$1.string()})},summary:"Update a user context",tags:["users"],requestBody:{required:true,content:{"application/json":{schema:Zo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Zo}}}},"x-revturbine-operation":{exposure:"internal",resource:"user-contexts",persistence:{table:"userContexts",mode:"update"}}}),delete:y({operationId:"deleteUserContext",requestParams:{path:z$1.object({userContextId:z$1.string()})},summary:"Delete a user context",tags:["users"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"user-contexts",persistence:{table:"userContexts",mode:"delete"}}})}});var {Unrestricted:Hn}=Pn,{Persisted:If,Transient:yv}=zn,{Internal:Kc}=Fn,Vw=sn(Ut.Playbook,{sdkInput:true}),xv=sn(Ut.Playbook,{inConfig:false,sdkInput:true}),Uw=z$1.enum(["default","custom"]).meta({id:"DimensionCategory","x-revturbine-schema-persistence":yv,"x-revturbine-schema-exposure":Kc}),Bw=z$1.enum(["system","sdk_trait","sdk_trait_enum","cdp_property","manual_list"]).meta({id:"DimensionSourceType","x-revturbine-schema-persistence":yv,"x-revturbine-schema-exposure":Kc}),nf=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...Hn,readOnly:true}),name:Bn.meta(Hn),handle:rn.optional().meta(Hn),category:Uw.default("custom").meta(Hn),visibility_toggle:z$1.boolean().default(true).meta(Hn),source_type:Bw.default("system").meta(Hn),estimated_size:z$1.number().int().min(0).optional().meta(Hn)}).meta({id:"SegmentDimension","x-revturbine-schema-persistence":If,"x-revturbine-schema-exposure":Kc,...xv,...Sr()}),qw=nr("SegmentDimensionAnchor"),rf=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...Hn,readOnly:true}),dimension_id:z$1.string().min(1).meta(Hn),name:Bn.meta(Hn),handle:rn.meta(Hn),description:qa.meta(Hn),definition_rule:z$1.record(z$1.string(),z$1.unknown()).optional().meta(Hn),used_in_count:z$1.number().int().min(0).default(0).meta({...Hn,readOnly:true})}).meta({id:"SegmentValue","x-revturbine-schema-persistence":If,"x-revturbine-schema-exposure":Kc,...xv,...Sr()}),Dw=nr("SegmentValueAnchor");le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...Hn,readOnly:true}),name:Bn.meta(Hn),handle:rn.meta(Hn),description:qa.meta(Hn),rules:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Hn),experiment_id:z$1.string().min(1).optional().meta(Hn),is_active:z$1.boolean().default(true).meta(Hn),estimated_size:z$1.number().int().min(0).nullable().default(null).meta(Hn),metadata:Ln.meta(Hn)}).meta({id:"Segment","x-revturbine-schema-persistence":If,"x-revturbine-schema-exposure":Kc,...Vw,...Sr()});({"/api/segment-dimension-anchors":{get:y({operationId:"listSegmentDimensionAnchors",requestParams:{query:te},summary:"List segment dimension anchors (identity registry)",tags:["segments"],responses:{200:{description:"Segment dimension anchor list",content:{"application/json":{schema:ee(qw)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"segment-dimension-anchors",persistence:{table:"segmentDimensions",mode:"list"}}})},"/api/segment-value-anchors":{get:y({operationId:"listSegmentValueAnchors",requestParams:{query:te},summary:"List segment value anchors (identity registry)",tags:["segments"],responses:{200:{description:"Segment value anchor list",content:{"application/json":{schema:ee(Dw)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"segment-value-anchors",persistence:{table:"segmentValues",mode:"list"}}})},"/api/segments":{get:y({operationId:"listSegmentDimensions",requestParams:{query:te},summary:"List segment dimensions",tags:["segments"],responses:{200:{description:"Dimension list",content:{"application/json":{schema:ee(nf)}}}},"x-revturbine-operation":{exposure:"internal",resource:"segments",persistence:{table:"segmentDimensionVersions",mode:"list"}}})},"/api/segments/custom":{post:y({operationId:"createCustomDimension",summary:"Create custom segment dimension",tags:["segments"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({name:z$1.string(),description:z$1.string().optional()})}}},responses:{201:{description:"Created",content:{"application/json":{schema:nf}}}},"x-revturbine-operation":{exposure:"internal",resource:"segments",persistence:{table:"segmentDimensionVersions",mode:"create"}}})},"/api/segments/{dimensionId}":{delete:y({operationId:"deleteCustomDimension",requestParams:{path:z$1.object({dimensionId:z$1.string()})},summary:"Delete custom dimension",tags:["segments"],responses:{204:{description:"Deleted"},default:{description:"Error",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"segments",persistence:{table:"segmentDimensionVersions",mode:"delete"}}})},"/api/segments/{dimensionId}/visibility":{patch:y({operationId:"toggleDimensionVisibility",requestParams:{path:z$1.object({dimensionId:z$1.string()})},summary:"Toggle dimension visibility",tags:["segments"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({visible:z$1.boolean()})}}},responses:{200:{description:"Updated",content:{"application/json":{schema:nf}}}},"x-revturbine-operation":{exposure:"internal",resource:"segments",persistence:{table:"segmentDimensionVersions",mode:"update"}}})},"/api/segments/{dimensionId}/values":{get:y({operationId:"listSegmentValues",requestParams:{path:z$1.object({dimensionId:z$1.string()}),query:te},summary:"List segment values for dimension",tags:["segments"],responses:{200:{description:"Value list",content:{"application/json":{schema:ee(rf)}}}},"x-revturbine-operation":{exposure:"internal",resource:"segment-values",persistence:{table:"segmentValueVersions",mode:"list"}}}),post:y({operationId:"createSegmentValue",requestParams:{path:z$1.object({dimensionId:z$1.string()})},summary:"Create segment value",tags:["segments"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({name:z$1.string(),handle:z$1.string(),definition_rule:z$1.record(z$1.string(),z$1.unknown()).optional()})}}},responses:{201:{description:"Created",content:{"application/json":{schema:rf}}}},"x-revturbine-operation":{exposure:"internal",resource:"segment-values",persistence:{table:"segmentValueVersions",mode:"create"}}})},"/api/segment-values/{valueId}":{patch:y({operationId:"updateSegmentValue",requestParams:{path:z$1.object({valueId:z$1.string()})},summary:"Update segment value",tags:["segments"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({name:z$1.string().optional(),definition_rule:z$1.record(z$1.string(),z$1.unknown()).optional()})}}},responses:{200:{description:"Updated",content:{"application/json":{schema:rf}}}},"x-revturbine-operation":{exposure:"internal",resource:"segment-values",persistence:{table:"segmentValueVersions",mode:"update"}}}),delete:y({operationId:"deleteSegmentValue",requestParams:{path:z$1.object({valueId:z$1.string()})},summary:"Delete segment value",tags:["segments"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"segment-values",persistence:{table:"segmentValueVersions",mode:"delete"}}})}});var {Unrestricted:lt}=Pn,{Persisted:fl,Transient:Sv}=zn,{External:ga}=Fn,Pf=sn(Ut.Playbook,{sdkInput:true}),Mw=sn(Ut.Playbook,{inConfig:false,sdkInput:false}),Nw=sn(Ut.Playbook,{inConfig:false,sdkInput:true}),Hw=sn(Ut.Playbook,{inConfig:false,sdkInput:true,source:Hi.CodeConstant});le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...lt,readOnly:true}),handle:rn.meta({...lt,readOnly:true}),name:Bn.meta(lt),channel:z$1.enum(["in_app","email","push","sms","webhook"]).meta(lt),subject:z$1.string().max(500).optional().meta(lt),body:z$1.string().meta(lt),template_variables:z$1.array(z$1.string()).default([]).meta(lt),metadata:Ln.meta(lt)}).meta({id:"Message","x-revturbine-schema-persistence":fl,"x-revturbine-schema-exposure":ga,...Mw,...hi()});var sf=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...lt,readOnly:true}),name:Bn.meta(lt),handle:rn.meta(lt),action_type:sv.meta(lt),target_url:z$1.string().optional().meta(lt),target_plan_id:z$1.string().optional().meta(lt),config_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(lt),metadata:Ln.meta(lt)}).meta({id:"CtaPath","x-revturbine-schema-persistence":fl,"x-revturbine-schema-exposure":ga,...Pf,...Sr()}),zw=nr("CtaPathAnchor"),Kw=z$1.enum(["header","body","secondary_body","message","cta_label","secondary_label","image","toggle","duration","send_delay","entitlement","plan","dropdown","json"]).meta({id:"TemplateFieldType","x-revturbine-schema-persistence":fl,"x-revturbine-schema-exposure":ga,...Hw}),Gw=z$1.object({name:z$1.string().min(1),field_type:Kw,required:z$1.boolean().default(false),default_value:z$1.unknown().optional(),order:z$1.number().int().min(0).optional(),help_text:z$1.string().max(500).optional()}).meta({id:"FieldDefinition","x-revturbine-schema-persistence":fl,"x-revturbine-schema-exposure":ga,...Nw}),af=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...lt,readOnly:true}),name:Bn.meta(lt),handle:rn.meta(lt),surface_type:FE.meta(lt),field_definitions:z$1.array(Gw).default([]).meta(lt),description:qa.meta(lt)}).meta({id:"SurfaceTemplate","x-revturbine-schema-persistence":fl,"x-revturbine-schema-exposure":ga,...Pf,...Sr()}),$w=nr("SurfaceTemplateAnchor"),of=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...lt,readOnly:true}),name:Bn.meta(lt),handle:rn.meta(lt),content_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(lt),variation_dimension_id:z$1.string().optional().meta(lt),variation_values:z$1.array(z$1.object({segment_value_id:z$1.string(),content_fields_override:z$1.record(z$1.string(),z$1.unknown())})).optional().meta(lt),notes:z$1.string().max(1e3).optional().meta(lt),used_in_count:z$1.number().int().min(0).default(0).meta({...lt,readOnly:true})}).meta({id:"MessageBlockRecord","x-revturbine-schema-persistence":fl,"x-revturbine-schema-exposure":ga,...Pf,...Sr()}),Zw=nr("MessageBlockRecordAnchor"),Yw=z$1.object({segment_id:z$1.string().min(1).meta(lt),message_block_id:z$1.string().min(1).meta(lt),ui_path_id:z$1.string().optional().meta(lt),promotion_id:z$1.string().optional().meta(lt)}).meta({id:"ContentPayloadSegmentEntry","x-revturbine-schema-persistence":Sv,"x-revturbine-schema-exposure":ga});z$1.object({payload_id:z$1.string().min(1).meta(lt),tenant_id:z$1.string().min(1).meta(lt),name:Bn.meta(lt),surface_template_id:z$1.string().min(1).meta(lt),default_message_block_id:z$1.string().min(1).meta(lt),segment_content_map:z$1.array(Yw).optional().meta(lt),ui_path_id:z$1.string().optional().meta(lt),promotion_id:z$1.string().optional().meta(lt),status:z$1.enum(["draft","active","inactive"]).meta(lt),created_at:z$1.string().datetime().optional().meta({...lt,readOnly:true}),updated_at:z$1.string().datetime().optional().meta({...lt,readOnly:true})}).meta({id:"ContentPlacementPayload","x-revturbine-schema-persistence":Sv,"x-revturbine-schema-exposure":ga});({"/api/surface-template-anchors":{get:y({operationId:"listSurfaceTemplateAnchors",requestParams:{query:te},summary:"List surface template anchors (identity registry)",tags:["content"],responses:{200:{description:"Surface template anchor list",content:{"application/json":{schema:ee($w)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"surface-template-anchors",persistence:{table:"surfaceTemplates",mode:"list"}}})},"/api/surface-templates":{get:y({operationId:"listSurfaceTemplates",requestParams:{query:te},summary:"List surface templates",tags:["content"],responses:{200:{description:"Template list",content:{"application/json":{schema:ee(af)}}}},"x-revturbine-operation":{exposure:"external",resource:"surface-templates",persistence:{table:"surfaceTemplateVersions",mode:"list"}}})},"/api/message-block-record-anchors":{get:y({operationId:"listMessageBlockRecordAnchors",requestParams:{query:te},summary:"List message block anchors (identity registry)",tags:["content"],responses:{200:{description:"Message block anchor list",content:{"application/json":{schema:ee(Zw)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"message-block-record-anchors",persistence:{table:"messageBlocks",mode:"list"}}})},"/api/messages":{get:y({operationId:"listMessageBlocks",requestParams:{query:te},summary:"List message blocks",tags:["content"],responses:{200:{description:"Message block list",content:{"application/json":{schema:ee(of)}}}},"x-revturbine-operation":{exposure:"external",resource:"message-blocks",persistence:{table:"messageBlockVersions",mode:"list"}}})},"/api/cta-path-anchors":{get:y({operationId:"listCtaPathAnchors",requestParams:{query:te},summary:"List CTA path anchors (identity registry)",tags:["content"],responses:{200:{description:"CTA path anchor list",content:{"application/json":{schema:ee(zw)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"cta-path-anchors",persistence:{table:"ctaPaths",mode:"list"}}})},"/api/cta-paths":{get:y({operationId:"listCtaPaths",requestParams:{query:te},summary:"List CTA paths",tags:["content"],responses:{200:{description:"CTA path list",content:{"application/json":{schema:ee(sf)}}}},"x-revturbine-operation":{exposure:"external",resource:"cta-paths",persistence:{table:"ctaPathVersions",mode:"list"}}})}});var {Unrestricted:ll,Pii:Ww}=Pn,{Persisted:Iv}=zn,{Internal:Xw,External:Jw}=Fn,Qw=sn(Ut.Branding,{sdkInput:false});z$1.object({id:z$1.string().min(1).meta({...ll,readOnly:true}),name:z$1.string().min(1).max(120).meta(ll),mode:z$1.enum(["light","dark","system"]).default("system").meta(ll),tokens:z$1.record(z$1.string(),z$1.string()).default({}).meta(ll)}).meta({id:"Theme","x-revturbine-schema-persistence":Iv,"x-revturbine-schema-exposure":Jw,...Qw});var Yb=le.merge(Ee).extend({user_id:z$1.string().min(1).meta(Ww),scope:z$1.string().min(1).meta(ll),preferences:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(ll)}).meta({id:"UiPreference","x-revturbine-schema-persistence":Iv,"x-revturbine-schema-exposure":Xw});({"/api/ui-preferences":{get:y({operationId:"listUiPreferences",requestParams:{query:te},summary:"List UI preferences",tags:["ui"],responses:{200:{description:"UI preferences list response",content:{"application/json":{schema:ee(Yb)}}}},"x-revturbine-operation":{exposure:"internal",resource:"ui-preferences",persistence:{table:"uiPreferences",mode:"list"}}}),put:y({operationId:"upsertUiPreferences",summary:"Upsert UI preferences",tags:["ui"],requestBody:{required:true,content:{"application/json":{schema:z$1.array(xr(Yb))}}},responses:{200:{description:"UI preferences upsert response",content:{"application/json":{schema:z$1.object({updated:z$1.number().int().min(0)})}}}},"x-revturbine-operation":{exposure:"internal",resource:"ui-preferences",persistence:{table:"uiPreferences",mode:"upsert",writeSchema:"UiPreferenceSchema#writable"}}})}});var {Unrestricted:ht,Financial:ms}=Pn,{Persisted:Pv,Transient:Gc}=zn,{External:$c,Internal:Tv}=Fn,eO=z$1.object({month:z$1.string().meta(ht),cohort_size:z$1.number().int().min(0).meta(ht),retained:z$1.number().int().min(0).meta(ht),retention_rate:z$1.number().min(0).max(1).meta(ht),revenue_cents:z$1.number().int().min(0).meta(ms)}).meta({id:"CohortMonth","x-revturbine-schema-persistence":Gc,"x-revturbine-schema-exposure":$c}),tO=z$1.object({step:z$1.string().meta(ht),label:z$1.string().meta(ht),count:z$1.number().int().min(0).meta(ht),conversion_rate:z$1.number().min(0).max(1).meta(ht),drop_off_rate:z$1.number().min(0).max(1).meta(ht)}).meta({id:"FunnelStep","x-revturbine-schema-persistence":Gc,"x-revturbine-schema-exposure":$c}),nO=z$1.object({placement_id:z$1.string().meta(ht),placement_name:z$1.string().meta(ht),impressions:z$1.number().int().min(0).meta(ht),clicks:z$1.number().int().min(0).meta(ht),conversions:z$1.number().int().min(0).meta(ht),ctr:z$1.number().min(0).meta(ht),conversion_rate:z$1.number().min(0).meta(ht),revenue_cents:z$1.number().int().min(0).meta(ms)}).meta({id:"PlacementPerformanceRow","x-revturbine-schema-persistence":Gc,"x-revturbine-schema-exposure":$c}),rO=z$1.object({date:z$1.string().meta(ht),mrr_cents:z$1.number().int().min(0).meta(ms),arr_cents:z$1.number().int().min(0).meta(ms),new_mrr_cents:z$1.number().int().min(0).meta(ms),churned_mrr_cents:z$1.number().int().min(0).meta(ms),expansion_mrr_cents:z$1.number().int().min(0).meta(ms),net_new_mrr_cents:z$1.number().int().meta(ms)}).meta({id:"RevenueMetric","x-revturbine-schema-persistence":Gc,"x-revturbine-schema-exposure":$c}),iO=z$1.object({metric_key:z$1.string().min(1).meta(ht),label:z$1.string().meta(ht),current_value:z$1.number().meta(ms),previous_value:z$1.number().nullable().default(null).meta(ms),change_percent:z$1.number().nullable().default(null).meta(ht),period:z$1.string().meta(ht),unit:z$1.enum(["count","cents","percent","ratio","seconds"]).default("count").meta(ht)}).meta({id:"KpiAggregate","x-revturbine-schema-persistence":Gc,"x-revturbine-schema-exposure":$c}),Wb=le.merge(Ee).merge(Be).extend({report_type:z$1.enum(["plan_drift","entitlement_drift","usage_anomaly","revenue_anomaly"]).meta(ht),severity:_f.meta(ht),resource_type:z$1.string().min(1).meta(ht),resource_id:z$1.string().min(1).meta(ht),summary:z$1.string().max(1e3).meta(ht),expected_value:z$1.unknown().optional().meta(ht),actual_value:z$1.unknown().optional().meta(ht),affected_customer_count:z$1.number().int().min(0).default(0).meta(ht),is_resolved:z$1.boolean().default(false).meta(ht),resolved_at:An.meta(ht),metadata:Ln.meta(ht)}).meta({id:"DriftReport","x-revturbine-schema-persistence":Pv,"x-revturbine-schema-exposure":Tv}),Xb=le.merge(Ee).merge(Be).extend({alert_type:z$1.enum(["usage_threshold","revenue_drop","conversion_drop","experiment_significance","drift_detected","custom"]).meta(ht),severity:_f.meta(ht),title:z$1.string().min(1).max(300).meta(ht),description:z$1.string().max(2e3).meta(ht),resource_type:z$1.string().optional().meta(ht),resource_id:z$1.string().optional().meta(ht),is_acknowledged:z$1.boolean().default(false).meta(ht),acknowledged_at:An.meta(ht),acknowledged_by:z$1.string().nullable().default(null).meta(ht),metadata:Ln.meta(ht)}).meta({id:"Alert","x-revturbine-schema-persistence":Pv,"x-revturbine-schema-exposure":Tv});({"/api/analytics/kpis":{get:y({operationId:"listKpiAggregates",requestParams:{query:te},summary:"List KPI aggregate metrics",tags:["analytics"],responses:{200:{description:"KPI list",content:{"application/json":{schema:ee(iO)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"kpiAggregates",mode:"list"}}})},"/api/analytics/placement-performance":{get:y({operationId:"listPlacementPerformance",requestParams:{query:te},summary:"List placement performance rows",tags:["analytics"],responses:{200:{description:"Performance rows",content:{"application/json":{schema:ee(nO)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"placementPerformance",mode:"list"}}})},"/api/analytics/revenue":{get:y({operationId:"listRevenueMetrics",requestParams:{query:te},summary:"List revenue metrics over time",tags:["analytics"],responses:{200:{description:"Revenue metrics",content:{"application/json":{schema:ee(rO)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"revenueMetrics",mode:"list"}}})},"/api/analytics/cohorts":{get:y({operationId:"listCohortMetrics",requestParams:{query:te},summary:"List cohort retention metrics",tags:["analytics"],responses:{200:{description:"Cohort metrics",content:{"application/json":{schema:ee(eO)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"cohortMetrics",mode:"list"}}})},"/api/analytics/funnels":{get:y({operationId:"listFunnelSteps",requestParams:{query:te},summary:"List funnel step metrics",tags:["analytics"],responses:{200:{description:"Funnel steps",content:{"application/json":{schema:ee(tO)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"funnelSteps",mode:"list"}}})},"/api/analytics/drift-reports":{get:y({operationId:"listDriftReports",requestParams:{query:te},summary:"List drift reports",tags:["analytics"],responses:{200:{description:"Drift reports",content:{"application/json":{schema:ee(Wb)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"driftReports",mode:"list"}}})},"/api/analytics/drift-reports/{reportId}/resolve":{post:y({operationId:"resolveDriftReport",requestParams:{path:z$1.object({reportId:z$1.string()})},summary:"Mark a drift report as resolved",tags:["analytics"],responses:{200:{description:"Resolved",content:{"application/json":{schema:Wb}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"driftReports",mode:"update"}}})},"/api/analytics/alerts":{get:y({operationId:"listAlerts",requestParams:{query:te},summary:"List alerts",tags:["analytics"],responses:{200:{description:"Alert list",content:{"application/json":{schema:ee(Xb)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"alerts",mode:"list"}}})},"/api/analytics/alerts/{alertId}/acknowledge":{post:y({operationId:"acknowledgeAlert",requestParams:{path:z$1.object({alertId:z$1.string()})},summary:"Acknowledge an alert",tags:["analytics"],responses:{200:{description:"Acknowledged",content:{"application/json":{schema:Xb}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"alerts",mode:"update"}}})}});var {Unrestricted:w,Pii:ul}=Pn,{Persisted:Cv,Transient:Vn}=zn,{Internal:_a,External:dr}=Fn,kv=z$1.enum(["clickstream","telemetry","sdk","workflow","system"]).meta({id:"EventSource","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr}),sO=le.extend({event_type:z$1.string().min(1).meta(w),source:kv.default("sdk").meta(w),tenant_id:z$1.string().min(1).optional().meta(w),user_id:z$1.string().min(1).optional().meta(ul),session_id:z$1.string().min(1).optional().meta(ul),occurred_at:z$1.string().datetime().meta(w),request_id:z$1.string().min(1).meta(w),attributes:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(w),payload:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(w)}).meta({id:"EventEnvelope","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":_a}),aO=sO.extend({ingested_at:z$1.string().datetime().meta(w)}).meta({id:"IngestedEvent","x-revturbine-schema-persistence":Cv,"x-revturbine-schema-exposure":_a});z$1.array(z$1.object({id:z$1.string().min(1).optional().meta(w),event_type:z$1.string().min(1).meta(w),occurred_at:z$1.string().datetime().optional().meta(w),tenant_id:z$1.string().min(1).optional().meta(w),user_id:z$1.string().min(1).optional().meta(ul),session_id:z$1.string().min(1).optional().meta(ul),attributes:z$1.record(z$1.string(),z$1.unknown()).optional().meta(w),payload:z$1.record(z$1.string(),z$1.unknown()).optional().meta(w),message:z$1.string().optional().meta(w),level:z$1.string().optional().meta(w),path:z$1.string().optional().meta(w)})).meta({id:"EventIngestBatch","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":_a});var oO=z$1.enum(["impression","dismiss","remind_me_later","cta_clicked","cta_completed","suppress"]).meta({id:"TreatmentInteractionType","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});z$1.object({user_id:z$1.string().min(1).meta(ul),placement_id:z$1.string().min(1).meta(w),treatment_id:z$1.string().min(1).optional().meta(w),surface_slot_id:z$1.string().min(1).optional().meta(w),surface_template_id:z$1.string().min(1).optional().meta(w),payload_id:z$1.string().min(1).optional().meta(w),interaction_type:oO.meta(w),interaction_at:z$1.string().datetime().optional().meta(w),message_block_handle:z$1.string().min(1).optional().meta(w),message_block_id:z$1.string().min(1).optional().meta(w),experiment_id:z$1.string().min(1).optional().meta(w),variant_key:z$1.string().min(1).optional().meta(w),test:z$1.boolean().optional().meta(w),metadata:z$1.record(z$1.string(),z$1.unknown()).optional().meta(w)}).meta({id:"TreatmentInteractionInput","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});z$1.enum(["trial_midpoint","trial_expiring","trial_expired","usage_limit_approaching","usage_limit_reached","credit_balance_low","seat_limit_reached","feature_gated","cancel_intent","payment_failed","auto_renewal_reminder","onboarding_complete","invite_teammate_prompt","referral_offer","plan_upgrade_nudge"]).meta({id:"TriggerEventType","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});z$1.object({days_remaining:z$1.number().int().min(0).optional().meta(w)}).meta({id:"TrialTriggerPayload","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});z$1.object({entitlement_handle:z$1.string().optional().meta(w),current_usage:z$1.number().min(0).optional().meta(w),usage_limit:z$1.number().min(0).optional().meta(w),usage_percent:z$1.number().min(0).max(100).optional().meta(w),threshold:z$1.number().min(0).optional().meta(w),balance:z$1.number().min(0).optional().meta(w),allocation:z$1.number().min(0).optional().meta(w),seats_used:z$1.number().int().min(0).optional().meta(w),seats_allowed:z$1.number().int().min(0).optional().meta(w)}).meta({id:"UsageTriggerPayload","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});z$1.object({feature:z$1.string().min(1).meta(w)}).meta({id:"FeatureGateTriggerPayload","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});z$1.object({retry_count:z$1.number().int().min(0).optional().meta(w),renewal_date:z$1.string().optional().meta(w)}).meta({id:"PaymentTriggerPayload","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});z$1.object({event_type:z$1.string().min(1).meta(w),payload:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(w)}).meta({id:"SemanticEvent","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});var cO=z$1.enum(["system","workflow"]).meta({id:"ControlPlaneEventSource","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr}),dO=z$1.enum(["web_signed_up","web_signed_in","cli_signed_up","cli_signed_in","cli_command_executed","changeset_submitted","changeset_approved","changeset_rejected","changeset_deployed","changeset_launched","changeset_parked","changeset_resumed","changeset_discarded","changeset_archived","config_imported","config_exported","entity_created","entity_updated","entity_deleted","web_api_error"]).meta({id:"ControlPlaneEventType","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});z$1.object({event_type:dO.meta(w),source:cO.meta(w),payload:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(w)}).meta({id:"ControlPlaneSemanticEvent","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});z$1.object({q:z$1.string().optional().meta(w),source:kv.optional().meta(w),event_type:z$1.string().optional().meta(w),from:z$1.string().datetime().optional().meta(w),to:z$1.string().datetime().optional().meta(w),page:z$1.coerce.number().int().min(1).default(1).meta(w),per_page:z$1.coerce.number().int().min(1).max(100).default(25).meta(w)}).meta({id:"EventSearchParams","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":_a});var uO=z$1.enum(["stripe","apple","google"]).meta({id:"WebhookEventSource","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":_a}),mO=z$1.enum(["processed","failed","skipped"]).meta({id:"WebhookEventStatus","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":_a}),lf=le.merge(Ee).merge(Be).extend({event_id:z$1.string().min(1).meta(w),event_type:z$1.string().min(1).meta(w),source:uO.meta(w),payload:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(w),status:mO.default("processed").meta(w),processed_at:z$1.string().datetime().optional().meta(w),error_message:z$1.string().optional().meta(w)}).meta({id:"WebhookEventLog","x-revturbine-schema-persistence":Cv,"x-revturbine-schema-exposure":_a});z$1.object({accepted:z$1.number().int().min(0).meta(w)}).meta({id:"null","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":_a});var pO=500,fO=z$1.enum(["explicit","automatic","derived","raw"]).meta({id:"EventOrigin","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr}),hO=z$1.object({environment_id:z$1.string().min(1).meta(w),user_id:z$1.string().min(1).meta(ul),account_id:z$1.string().min(1).meta(w),event_name:z$1.string().min(1).max(120).meta(w),event_ts:z$1.string().datetime().meta(w),properties:z$1.string().optional().meta(w),surface_slot_id:z$1.string().nullable().optional().meta(w),placement_id:z$1.string().nullable().optional().meta(w),payload_id:z$1.string().nullable().optional().meta(w),request_id:z$1.string().optional().meta(w),experiment_id:z$1.string().nullable().optional().meta(w),variant_key:z$1.string().nullable().optional().meta(w),tenant_id:z$1.string().optional().meta(w),event_id:z$1.string().nullable().optional().meta(w),origin:fO.nullable().optional().meta(w),playbook_version:z$1.string().nullable().optional().meta(w),decision_id:z$1.string().nullable().optional().meta(w),test:z$1.boolean().optional().meta(w)}).meta({id:"TrackEvent","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});z$1.object({events:z$1.array(hO).min(1).max(pO).meta(w)}).meta({id:"TrackIngestBatch","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});var _O=10,bO=z$1.enum(["sdk_init","sdk_error","sdk_validation_warning","resolution_failure"]).meta({id:"SdkMetaEventType","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr}),vO=z$1.object({plans:z$1.number().int().min(0).meta(w),entitlements:z$1.number().int().min(0).meta(w),entitlement_rules:z$1.number().int().min(0).meta(w),segments:z$1.number().int().min(0).meta(w),placements:z$1.number().int().min(0).meta(w),placement_payloads:z$1.number().int().min(0).meta(w),content_ui_paths:z$1.number().int().min(0).meta(w),surface_templates:z$1.number().int().min(0).meta(w)}).meta({id:"SdkConfigShape","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr}),yO=z$1.object({event_type:bO.meta(w),occurred_at:z$1.string().datetime().meta(w),request_id:z$1.string().min(1).optional().meta(w),config_hash_id:z$1.string().min(1).max(64).optional().meta(w),sdk_version:z$1.string().min(1).max(64).optional().meta(w),runtime_mode:z$1.string().min(1).max(64).optional().meta(w),schema_version:z$1.string().min(1).max(64).optional().meta(w),bundle_version:z$1.string().min(1).max(64).optional().meta(w),config_shape:vO.optional().meta(w),message:z$1.string().max(500).optional().meta(w),reason:z$1.string().min(1).max(64).optional().meta(w),placement_handle:z$1.string().min(1).max(64).optional().meta(w),slot_handle:z$1.string().min(1).max(64).optional().meta(w),surface:z$1.string().min(1).max(64).optional().meta(w),plan_handle:z$1.string().min(1).max(64).optional().meta(w),entitlement_handle:z$1.string().min(1).max(64).optional().meta(w)}).meta({id:"SdkMetaEvent","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});z$1.object({events:z$1.array(yO).min(1).max(_O).meta(w)}).meta({id:"SdkMetaIngestBatch","x-revturbine-schema-persistence":Vn,"x-revturbine-schema-exposure":dr});({"/api/events/search":{get:y({operationId:"searchEvents",summary:"Search ingested events",tags:["events"],responses:{200:{description:"Paginated event results",content:{"application/json":{schema:OE(aO)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"events"}})},"/api/webhook-events":{get:y({operationId:"listWebhookEvents",requestParams:{query:te},summary:"List webhook event log entries",tags:["events"],responses:{200:{description:"Webhook event list",content:{"application/json":{schema:ee(lf)}}}},"x-revturbine-operation":{exposure:"internal",resource:"webhook-events",persistence:{table:"webhookEventLog",mode:"list"}}})}});var {Unrestricted:$e}=Pn,{Persisted:Zc,Transient:Yc}=zn,{Internal:hs}=Fn,Rv=sn(Ut.Playbook,{sdkInput:true}),Ev=sn(Ut.Playbook,{inConfig:false,sdkInput:true}),SO=z$1.enum(["not_started","active","expired","converted","cancelled"]).meta({id:"TrialStatus","x-revturbine-schema-persistence":Yc,"x-revturbine-schema-exposure":hs}),Tf=z$1.enum(["time","usage"]).meta({id:"TrialLimitType","x-revturbine-schema-persistence":Yc,"x-revturbine-schema-exposure":hs}),wv=z$1.object({name:Bn.meta($e),handle:rn.meta($e),plan_id:z$1.string().nullable().optional().meta($e),segment_id:z$1.string().nullable().optional().meta($e),trial_limit_type:Tf.default("time").meta($e),duration_days:z$1.number().int().min(1).max(365).nullable().optional().meta($e),grace_period_days:z$1.number().int().min(0).default(0).meta($e),usage_entitlement_handle:z$1.string().min(1).optional().meta($e),usage_limit_value:z$1.number().int().min(1).optional().meta($e),require_payment_method:z$1.boolean().default(false).meta($e),auto_convert:z$1.boolean().default(true).meta($e),convert_to_plan_id:z$1.string().optional().meta($e),fallback_plan_id:z$1.string().optional().meta($e),limit_per_customer:z$1.number().int().min(1).default(1).meta($e),is_active:z$1.boolean().default(true).meta($e),metadata:Ln.meta($e)}),Yo=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...$e,readOnly:true})}).merge(wv).meta({id:"FreeTrialRule","x-revturbine-schema-persistence":Zc,"x-revturbine-schema-exposure":hs,...Rv,...Sr()}),IO=nr("FreeTrialRuleAnchor"),PO=z$1.enum(["signup","first_premium_access","manual"]).meta({id:"ReverseTrialStartPolicy","x-revturbine-schema-persistence":Yc,"x-revturbine-schema-exposure":hs}),Ov=z$1.object({name:Bn.meta($e),handle:rn.meta($e),premium_plan_id:z$1.string().min(1).meta($e),fallback_plan_id:z$1.string().min(1).meta($e),segment_id:z$1.string().nullable().optional().meta($e),trial_limit_type:Tf.default("time").meta($e),duration_days:z$1.number().int().min(1).max(365).nullable().optional().meta($e),usage_entitlement_handle:z$1.string().min(1).optional().meta($e),usage_limit_value:z$1.number().int().min(1).optional().meta($e),start_policy:PO.default("signup").meta($e),show_upgrade_prompt_at_day:z$1.number().int().min(0).optional().meta($e),entitlements_during_trial:z$1.array(z$1.string()).default([]).meta($e),is_active:z$1.boolean().default(true).meta($e),metadata:Ln.meta($e)}),Wo=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...$e,readOnly:true})}).merge(Ov).meta({id:"ReverseTrialRule","x-revturbine-schema-persistence":Zc,"x-revturbine-schema-exposure":hs,...Rv,...Sr()}),TO=nr("ReverseTrialRuleAnchor"),Av=z$1.enum(["1_per_lifetime","1_per_plan","1_per_year","unlimited"]).meta({id:"TrialLimitPolicy","x-revturbine-schema-persistence":Yc,"x-revturbine-schema-exposure":hs}),jv=z$1.enum(["per_customer","per_email_domain"]).meta({id:"TrialEligibilityScope","x-revturbine-schema-persistence":Yc,"x-revturbine-schema-exposure":hs}),Xo=le.merge(Ee).merge(Be).extend({trial_limit_policy:Av.default("1_per_lifetime").meta($e),eligibility_scope:jv.default("per_customer").meta($e)}).meta({id:"FreeTrialSettings","x-revturbine-schema-persistence":Zc,"x-revturbine-schema-exposure":hs,...Ev}),Jo=le.merge(Ee).merge(Be).extend({trial_limit_policy:Av.default("1_per_lifetime").meta($e),eligibility_scope:jv.default("per_customer").meta($e)}).meta({id:"ReverseTrialSettings","x-revturbine-schema-persistence":Zc,"x-revturbine-schema-exposure":hs,...Ev}),ku=le.merge(Ee).merge(Be).extend({customer_id:z$1.string().min(1).meta($e),rule_id:z$1.string().min(1).meta($e),rule_type:z$1.enum(["free_trial","reverse_trial"]).meta($e),plan_id:z$1.string().min(1).meta($e),status:SO.default("active").meta($e),started_at:z$1.string().datetime().meta({...$e,readOnly:true}),expires_at:z$1.string().datetime().nullable().optional().meta($e),trial_limit_type:Tf.default("time").meta($e),usage_entitlement_handle:z$1.string().min(1).optional().meta($e),usage_limit_value:z$1.number().int().min(1).optional().meta($e),converted_at:An.meta($e),cancelled_at:An.meta($e),metadata:Ln.meta($e)}).meta({id:"TrialInstance","x-revturbine-schema-persistence":Zc,"x-revturbine-schema-exposure":hs});({"/api/free-trial-rule-anchors":{get:y({operationId:"listFreeTrialRuleAnchors",requestParams:{query:te},summary:"List free trial rule anchors (identity registry)",tags:["trials"],responses:{200:{description:"Free trial rule anchor list",content:{"application/json":{schema:ee(IO)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-rule-anchors",persistence:{table:"freeTrialRules",mode:"list"}}})},"/api/trials/free-rules":{get:y({operationId:"listFreeTrialRules",requestParams:{query:te},summary:"List free trial rules",tags:["trials"],responses:{200:{description:"Free trial rule list",content:{"application/json":{schema:ee(Yo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"list"}}})},"/api/trials/free-rules/{ruleId}":{get:y({operationId:"getFreeTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Get free trial rule",tags:["trials"],responses:{200:{description:"Free trial rule",content:{"application/json":{schema:Yo}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"get"}}}),patch:y({operationId:"updateFreeTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Update free trial rule",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:Yo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Yo}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"update"}}}),delete:y({operationId:"deleteFreeTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Delete free trial rule",tags:["trials"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"delete"}}})},"/api/reverse-trial-rule-anchors":{get:y({operationId:"listReverseTrialRuleAnchors",requestParams:{query:te},summary:"List reverse trial rule anchors (identity registry)",tags:["trials"],responses:{200:{description:"Reverse trial rule anchor list",content:{"application/json":{schema:ee(TO)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rule-anchors",persistence:{table:"reverseTrialRules",mode:"list"}}})},"/api/trials/reverse-rules":{get:y({operationId:"listReverseTrialRules",requestParams:{query:te},summary:"List reverse trial rules",tags:["trials"],responses:{200:{description:"Reverse trial rule list",content:{"application/json":{schema:ee(Wo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"list"}}})},"/api/trials/reverse-rules/{ruleId}":{get:y({operationId:"getReverseTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Get reverse trial rule",tags:["trials"],responses:{200:{description:"Reverse trial rule",content:{"application/json":{schema:Wo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"get"}}}),patch:y({operationId:"updateReverseTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Update reverse trial rule",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:Wo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Wo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"update"}}}),delete:y({operationId:"deleteReverseTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Delete reverse trial rule",tags:["trials"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"delete"}}})},"/api/trials/free-settings":{get:y({operationId:"listFreeTrialSettings",requestParams:{query:te},summary:"List free trial settings (one row per tenant)",tags:["trials"],responses:{200:{description:"Free trial settings list",content:{"application/json":{schema:ee(Xo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-settings",persistence:{table:"freeTrialSettings",mode:"list"}}})},"/api/trials/free-settings/{settingsId}":{get:y({operationId:"getFreeTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Get free trial settings",tags:["trials"],responses:{200:{description:"Free trial settings",content:{"application/json":{schema:Xo}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-settings",persistence:{table:"freeTrialSettings",mode:"get"}}}),patch:y({operationId:"updateFreeTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Update free trial settings",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:Xo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Xo}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-settings",persistence:{table:"freeTrialSettings",mode:"update"}}})},"/api/trials/reverse-settings":{get:y({operationId:"listReverseTrialSettings",requestParams:{query:te},summary:"List reverse trial settings (one row per tenant)",tags:["trials"],responses:{200:{description:"Reverse trial settings list",content:{"application/json":{schema:ee(Jo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-settings",persistence:{table:"reverseTrialSettings",mode:"list"}}})},"/api/trials/reverse-settings/{settingsId}":{get:y({operationId:"getReverseTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Get reverse trial settings",tags:["trials"],responses:{200:{description:"Reverse trial settings",content:{"application/json":{schema:Jo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-settings",persistence:{table:"reverseTrialSettings",mode:"get"}}}),patch:y({operationId:"updateReverseTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Update reverse trial settings",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:Jo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Jo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-settings",persistence:{table:"reverseTrialSettings",mode:"update"}}})},"/api/trials/instances":{get:y({operationId:"listTrialInstances",requestParams:{query:te},summary:"List trial instances",tags:["trials"],responses:{200:{description:"Trial instance list",content:{"application/json":{schema:ee(ku)}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"list"}}})},"/api/trials/instances/{instanceId}":{get:y({operationId:"getTrialInstance",requestParams:{path:z$1.object({instanceId:z$1.string()})},summary:"Get trial instance",tags:["trials"],responses:{200:{description:"Trial instance",content:{"application/json":{schema:ku}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"get"}}})},"/api/trials/instances/{instanceId}/cancel":{post:y({operationId:"cancelTrialInstance",requestParams:{path:z$1.object({instanceId:z$1.string()})},summary:"Cancel an active trial",tags:["trials"],responses:{200:{description:"Cancelled",content:{"application/json":{schema:ku}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"update"}}})},"/api/trials/instances/{instanceId}/convert":{post:y({operationId:"convertTrialInstance",requestParams:{path:z$1.object({instanceId:z$1.string()})},summary:"Convert trial to paid subscription",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({plan_id:z$1.string().optional()})}}},responses:{200:{description:"Converted",content:{"application/json":{schema:ku}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"update"}}})}});var {Unrestricted:yn}=Pn,{Persisted:Cf,Transient:Fv}=zn,{Internal:Wc}=Fn,Lv=sn(Ut.Playbook,{inConfig:false,sdkInput:true}),CO=z$1.enum(["draft","ramping","winning","neutral","needs_attention","paused","complete"]).meta({id:"ExperimentStatus","x-revturbine-schema-persistence":Fv,"x-revturbine-schema-exposure":Wc}),kO=z$1.enum(["placement_ab","entitlement_ab","plan_ab","pricing_ab","custom"]).meta({id:"ExperimentType","x-revturbine-schema-persistence":Fv,"x-revturbine-schema-exposure":Wc}),RO=z$1.object({variant_id:z$1.string().min(1),name:Bn,weight:z$1.number().min(0).max(1).default(.5),is_control:z$1.boolean().default(false),config:z$1.record(z$1.string(),z$1.unknown()).default({})}).meta({id:"ExperimentVariant","x-revturbine-schema-persistence":Cf,"x-revturbine-schema-exposure":Wc,...Lv}),Vs=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...yn,readOnly:true}),name:Bn.meta(yn),handle:rn.meta(yn),description:z$1.string().max(1e3).optional().meta(yn),experiment_type:kO.meta(yn),status:CO.default("draft").meta(yn),target_resource_id:z$1.string().optional().meta(yn),target_segment_ids:z$1.array(z$1.string()).default([]).meta(yn),variants:z$1.array(RO).min(2).meta(yn),primary_metric:z$1.string().min(1).meta(yn),metric_threshold:z$1.number().default(.05).meta(yn),secondary_metrics:z$1.array(z$1.string()).default([]).meta(yn),traffic_allocation:z$1.number().min(0).max(1).default(1).meta(yn),started_at:An.meta(yn),ended_at:An.meta(yn),confidence_threshold:z$1.number().min(0).max(1).default(.95).meta(yn),winning_variant_id:z$1.string().nullable().default(null).meta(yn),metadata:Ln.meta(yn)}).meta({id:"Experiment","x-revturbine-schema-persistence":Cf,"x-revturbine-schema-exposure":Wc,...Lv,...Sr()}),EO=nr("ExperimentAnchor"),wO=_f,Jb=le.merge(Ee).merge(Be).extend({experiment_id:z$1.string().optional().meta(yn),resource_type:z$1.string().min(1).meta(yn),resource_id:z$1.string().min(1).meta(yn),severity:wO.default("info").meta(yn),title:z$1.string().min(1).max(300).meta(yn),description:z$1.string().max(2e3).meta(yn),suggested_action:z$1.string().max(1e3).optional().meta(yn),estimated_impact:z$1.number().optional().meta(yn),is_dismissed:z$1.boolean().default(false).meta(yn),metadata:Ln.meta(yn)}).meta({id:"OptimizationSuggestion","x-revturbine-schema-persistence":Cf,"x-revturbine-schema-exposure":Wc});({"/api/experiment-anchors":{get:y({operationId:"listExperimentAnchors",requestParams:{query:te},summary:"List experiment anchors (identity registry)",tags:["experiments"],responses:{200:{description:"Experiment anchor list",content:{"application/json":{schema:ee(EO)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiment-anchors",persistence:{table:"experiments",mode:"list"}}})},"/api/experiments":{get:y({operationId:"listExperiments",requestParams:{query:te},summary:"List experiments",tags:["experiments"],responses:{200:{description:"Experiment list",content:{"application/json":{schema:ee(Vs)}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"list"}}})},"/api/experiments/{experimentId}":{get:y({operationId:"getExperiment",requestParams:{path:z$1.object({experimentId:z$1.string()})},summary:"Get experiment",tags:["experiments"],responses:{200:{description:"Experiment",content:{"application/json":{schema:Vs}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"get"}}}),patch:y({operationId:"updateExperiment",requestParams:{path:z$1.object({experimentId:z$1.string()})},summary:"Update experiment",tags:["experiments"],requestBody:{required:true,content:{"application/json":{schema:Vs.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Vs}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"update"}}}),delete:y({operationId:"deleteExperiment",requestParams:{path:z$1.object({experimentId:z$1.string()})},summary:"Delete experiment",tags:["experiments"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"delete"}}})},"/api/experiments/{experimentId}/start":{post:y({operationId:"startExperiment",requestParams:{path:z$1.object({experimentId:z$1.string()})},summary:"Start experiment (begin traffic allocation)",tags:["experiments"],responses:{200:{description:"Started",content:{"application/json":{schema:Vs}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"update"}}})},"/api/experiments/{experimentId}/pause":{post:y({operationId:"pauseExperiment",requestParams:{path:z$1.object({experimentId:z$1.string()})},summary:"Pause running experiment",tags:["experiments"],responses:{200:{description:"Paused",content:{"application/json":{schema:Vs}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"update"}}})},"/api/experiments/{experimentId}/complete":{post:y({operationId:"completeExperiment",requestParams:{path:z$1.object({experimentId:z$1.string()})},summary:"Complete experiment and declare winner",tags:["experiments"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({winning_variant_id:z$1.string()})}}},responses:{200:{description:"Completed",content:{"application/json":{schema:Vs}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"update"}}})},"/api/optimization-suggestions":{get:y({operationId:"listOptimizationSuggestions",requestParams:{query:te},summary:"List optimization suggestions",tags:["experiments"],responses:{200:{description:"Suggestion list",content:{"application/json":{schema:ee(Jb)}}}},"x-revturbine-operation":{exposure:"internal",resource:"optimization-suggestions",persistence:{table:"optimizationSuggestions",mode:"list"}}})},"/api/optimization-suggestions/{suggestionId}/dismiss":{post:y({operationId:"dismissOptimizationSuggestion",requestParams:{path:z$1.object({suggestionId:z$1.string()})},summary:"Dismiss an optimization suggestion",tags:["experiments"],responses:{200:{description:"Dismissed",content:{"application/json":{schema:Jb}}}},"x-revturbine-operation":{exposure:"internal",resource:"optimization-suggestions",persistence:{table:"optimizationSuggestions",mode:"update"}}})}});var {Unrestricted:mr,Financial:Qb}=Pn,{Persisted:OO,Transient:Vv}=zn,{Internal:kf}=Fn,AO=sn(Ut.Playbook,{sdkInput:true}),jO=z$1.enum(["draft","scheduled","live","expired","archived"]).meta({id:"PromotionStatus","x-revturbine-schema-persistence":Vv,"x-revturbine-schema-exposure":kf}),FO=z$1.enum(["percentage","fixed_amount","free_months"]).meta({id:"DiscountType","x-revturbine-schema-persistence":Vv,"x-revturbine-schema-exposure":kf}),ua=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...mr,readOnly:true}),name:Bn.meta(mr),handle:rn.meta(mr),description:z$1.string().max(1e3).optional().meta(mr),rt_status:jO.default("draft").meta(mr),discount_type:FO.meta(mr),discount_value:z$1.number().min(0).meta(Qb),currency:z$1.string().length(3).default("USD").meta(Qb),applicable_plan_ids:z$1.array(z$1.string()).default([]).meta(mr),applicable_addon_ids:z$1.array(z$1.string()).default([]).meta(mr),target_segment_ids:z$1.array(z$1.string()).default([]).meta(mr),max_redemptions:z$1.number().int().min(0).nullable().default(null).meta(mr),current_redemptions:z$1.number().int().min(0).default(0).meta({...mr,readOnly:true}),coupon_code:z$1.string().max(100).optional().meta(mr),starts_at:An.meta(mr),ends_at:An.meta(mr),stripe_coupon_id:z$1.string().nullable().default(null).meta(mr),stripe_promotion_code_id:z$1.string().nullable().default(null).meta(mr),auto_sync_stripe:z$1.boolean().default(false).meta(mr),metadata:Ln.meta(mr)}).meta({id:"Promotion","x-revturbine-schema-persistence":OO,"x-revturbine-schema-exposure":kf,...AO,...Sr()}),LO=nr("PromotionAnchor");({"/api/promotion-anchors":{get:y({operationId:"listPromotionAnchors",requestParams:{query:te},summary:"List promotion anchors (identity registry)",tags:["promotions"],responses:{200:{description:"Promotion anchor list",content:{"application/json":{schema:ee(LO)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"promotion-anchors",persistence:{table:"promotions",mode:"list"}}})},"/api/promotions":{get:y({operationId:"listPromotions",requestParams:{query:te},summary:"List promotions",tags:["promotions"],responses:{200:{description:"Promotion list",content:{"application/json":{schema:ee(ua)}}}},"x-revturbine-operation":{exposure:"internal",resource:"promotions",persistence:{table:"promotionVersions",mode:"list"}}})},"/api/promotions/{promotionId}":{get:y({operationId:"getPromotion",requestParams:{path:z$1.object({promotionId:z$1.string()})},summary:"Get promotion",tags:["promotions"],responses:{200:{description:"Promotion",content:{"application/json":{schema:ua}}}},"x-revturbine-operation":{exposure:"internal",resource:"promotions",persistence:{table:"promotionVersions",mode:"get"}}}),patch:y({operationId:"updatePromotion",requestParams:{path:z$1.object({promotionId:z$1.string()})},summary:"Update promotion",tags:["promotions"],requestBody:{required:true,content:{"application/json":{schema:ua.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:ua}}}},"x-revturbine-operation":{exposure:"internal",resource:"promotions",persistence:{table:"promotionVersions",mode:"update"}}}),delete:y({operationId:"deletePromotion",requestParams:{path:z$1.object({promotionId:z$1.string()})},summary:"Delete (archive) promotion",tags:["promotions"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"promotions",persistence:{table:"promotionVersions",mode:"delete"}}})},"/api/promotions/{promotionId}/sync-stripe":{post:y({operationId:"syncPromotionToStripe",requestParams:{path:z$1.object({promotionId:z$1.string()})},summary:"Sync promotion to Stripe as coupon/promotion code",tags:["promotions"],responses:{200:{description:"Synced",content:{"application/json":{schema:ua}}}},"x-revturbine-operation":{exposure:"internal",resource:"promotions",persistence:{table:"promotionVersions",mode:"update"}}})},"/api/promotions/{promotionId}/duplicate":{post:y({operationId:"duplicatePromotion",requestParams:{path:z$1.object({promotionId:z$1.string()})},summary:"Duplicate promotion",tags:["promotions"],responses:{201:{description:"Duplicated",content:{"application/json":{schema:ua}}}},"x-revturbine-operation":{exposure:"internal",resource:"promotions",persistence:{table:"promotionVersions",mode:"create"}}})}});var {Unrestricted:On,Pii:Rf}=Pn,{Persisted:Ef}=zn,{Internal:wf}=Fn,VO=le.merge(Ee).merge(Be).extend({customer_id:z$1.string().min(1).meta(Rf),placement_id:z$1.string().min(1).meta(On),payload_id:z$1.string().nullable().default(null).meta(On),variant_id:z$1.string().nullable().default(null).meta(On),surface_type:z$1.string().meta(On),presented_at:z$1.string().datetime().meta({...On,readOnly:true}),dismissed_at:An.meta(On),cta_clicked_at:An.meta(On),cta_action_type:z$1.string().nullable().default(null).meta(On),converted:z$1.boolean().default(false).meta(On),session_id:z$1.string().optional().meta(On),metadata:Ln.meta(On)}).meta({id:"PresentationRecord","x-revturbine-schema-persistence":Ef,"x-revturbine-schema-exposure":wf}),UO=le.merge(Ee).merge(Be).extend({customer_id:z$1.string().min(1).meta(Rf),placement_id:z$1.string().min(1).meta(On),decision:z$1.enum(["show","suppress","defer"]).meta(On),reason:z$1.string().max(500).meta(On),matched_rules:z$1.array(z$1.object({rule_id:z$1.string(),rule_type:z$1.string(),matched:z$1.boolean()})).default([]).meta(On),experiment_id:z$1.string().nullable().default(null).meta(On),variant_id:z$1.string().nullable().default(null).meta(On),latency_ms:z$1.number().min(0).optional().meta(On)}).meta({id:"DecisionLog","x-revturbine-schema-persistence":Ef,"x-revturbine-schema-exposure":wf}),BO=le.merge(Ee).merge(Be).extend({customer_id:z$1.string().min(1).meta(Rf),entitlement_handle:z$1.string().min(1).meta(On),entitlement_type:z$1.string().meta(On),result:z$1.enum(["granted","denied","limited","metered"]).meta(On),current_usage:z$1.number().nullable().default(null).meta(On),limit:z$1.number().nullable().default(null).meta(On),source:z$1.enum(["plan","addon","override","trial"]).meta(On),source_id:z$1.string().min(1).meta(On),latency_ms:z$1.number().min(0).optional().meta(On)}).meta({id:"EntitlementEvalLog","x-revturbine-schema-persistence":Ef,"x-revturbine-schema-exposure":wf});({"/api/presentation-records":{get:y({operationId:"listPresentationRecords",requestParams:{query:te},summary:"List presentation records",tags:["runtime"],responses:{200:{description:"Presentation records",content:{"application/json":{schema:ee(VO)}}}},"x-revturbine-operation":{exposure:"internal",resource:"presentation-records",persistence:{table:"presentationRecords",mode:"list"}}})},"/api/decision-logs":{get:y({operationId:"listDecisionLogs",requestParams:{query:te},summary:"List decision logs",tags:["runtime"],responses:{200:{description:"Decision logs",content:{"application/json":{schema:ee(UO)}}}},"x-revturbine-operation":{exposure:"internal",resource:"decision-logs",persistence:{table:"decisionLogs",mode:"list"}}})},"/api/entitlement-eval-logs":{get:y({operationId:"listEntitlementEvalLogs",requestParams:{query:te},summary:"List entitlement evaluation logs",tags:["runtime"],responses:{200:{description:"Entitlement eval logs",content:{"application/json":{schema:ee(BO)}}}},"x-revturbine-operation":{exposure:"internal",resource:"entitlement-eval-logs",persistence:{table:"entitlementEvalLogs",mode:"list"}}})}});var {Unrestricted:g}=Pn,{Persisted:hl,Transient:Je}=zn,{Internal:Ri,External:Pt}=Fn,ft=sn(Ut.Playbook,{sdkInput:true}),al=sn(Ut.Playbook,{sdkInput:false}),pa=sn(Ut.Playbook,{inConfig:false,sdkInput:false}),Uv=sn(Ut.Playbook,{inConfig:false,sdkInput:true}),wc=sn(Ut.Playbook,{inConfig:false,sdkInput:true,source:Hi.CodeConstant}),df=sn(Ut.Playbook,{inConfig:false,sdkInput:true,source:Hi.Runtime}),uf=sn(Ut.Playbook,{inConfig:false,sdkInput:false,source:Hi.Runtime}),qO=sn(Ut.Billing,{sdkInput:false}),DO=sn(Ut.Metering,{sdkInput:false}),MO=sn(Ut.Branding,{inConfig:true,sdkInput:true}),NO=sn(Ut.Branding,{sdkInput:false}),HO="1.0.0",Oc=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...g,readOnly:true}),name:Bn.meta(g),handle:rn.meta(g),description:qa.meta(g),is_default:z$1.boolean().default(false).meta(g),entitlement_ids:z$1.array(z$1.string()).default([]).meta(g),metadata:Ln.meta(g)}).meta({id:"SeatType","x-revturbine-schema-persistence":hl,"x-revturbine-schema-exposure":Ri,...pa,...Sr()}),zO=nr("SeatTypeAnchor"),Ac=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...g,readOnly:true}),handle:rn.meta(g),label:z$1.string().min(1).meta(g),description:z$1.string().nullable().default(null).meta(g),category:z$1.enum(["user","plan","usage","trial","billing","promotion","custom"]).meta(g),data_source:z$1.string().nullable().default(null).meta(g),example_value:z$1.string().nullable().default(null).meta(g),value_map:z$1.record(z$1.string(),z$1.string()).default({}).meta(g),format:z$1.enum(["string","number","currency","percentage","date"]).nullable().default(null).meta(g),metadata:Ln.meta(g)}).meta({id:"PersonalizationToken","x-revturbine-schema-persistence":hl,"x-revturbine-schema-exposure":Ri,...pa,...Sr()}),KO=nr("PersonalizationTokenAnchor"),GO=z$1.enum(["not_started","started","details_submitted","charges_enabled","activated","deauthorized"]).meta({id:"OnboardingState","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Ri}),mf=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({handle:rn.meta({...g,readOnly:true}),stripe_account_id:z$1.string().min(1).meta(g),live_mode:z$1.boolean().default(false).meta(g),onboarding_state:GO.default("not_started").meta({...g,readOnly:true}),onboarding_complete:z$1.boolean().default(false).meta({...g,readOnly:true}),charges_enabled:z$1.boolean().default(false).meta({...g,readOnly:true}),details_submitted:z$1.boolean().default(false).meta({...g,readOnly:true}),payouts_enabled:z$1.boolean().default(false).meta({...g,readOnly:true}),webhook_secret_set:z$1.boolean().default(false).meta({...g,readOnly:true}),sync_products:z$1.boolean().default(true).meta(g),sync_prices:z$1.boolean().default(true).meta(g),sync_subscriptions:z$1.boolean().default(true).meta(g),sync_invoices:z$1.boolean().default(false).meta(g),default_currency:z$1.string().length(3).default("USD").meta(g),tax_behavior:z$1.enum(["inclusive","exclusive","unspecified"]).default("unspecified").meta(g),last_sync_at:z$1.string().optional().meta({...g,readOnly:true}),metadata:Ln.meta(g)}).meta({id:"StripeIntegrationConfig","x-revturbine-schema-persistence":hl,"x-revturbine-schema-exposure":Ri,...qO,...hi()});z$1.object({theme:z$1.record(z$1.string(),z$1.unknown()).optional().meta(g),workspace_name:z$1.string().optional().meta(g),logo_url:z$1.string().optional().meta(g),support_email:z$1.string().optional().meta(g)}).meta({id:"BrandingConfig","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...NO});var jc=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({handle:rn.meta({...g,readOnly:true}),entitlement_id:z$1.string().min(1).meta(g),meter_key:z$1.string().min(1).max(100).meta(g),aggregation_type:z$1.enum(["sum","count","max","last_value"]).default("sum").meta(g),reset_period:z$1.enum(["none","daily","weekly","monthly","yearly"]).default("monthly").meta(g),stripe_meter_id:z$1.string().nullable().default(null).meta(g),is_active:z$1.boolean().default(true).meta(g),metadata:Ln.meta(g)}).meta({id:"MeteringConfig","x-revturbine-schema-persistence":hl,"x-revturbine-schema-exposure":Ri,...DO,...hi()}),ev=z$1.enum(["block","warn","downgrade","throttle","notify_admin","custom"]).meta({id:"EnforcementAction","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Ri}),Fc=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...g,readOnly:true}),handle:rn.meta({...g,readOnly:true}),entitlement_id:z$1.string().min(1).meta(g),soft_limit_percent:z$1.number().min(0).max(100).default(80).meta(g),hard_limit_percent:z$1.number().min(0).max(100).default(100).meta(g),soft_limit_action:ev.default("warn").meta(g),hard_limit_action:ev.default("block").meta(g),grace_period_hours:z$1.number().int().min(0).default(0).meta(g),notification_channels:z$1.array(z$1.enum(["email","in_app","webhook"])).default(["in_app"]).meta(g),is_active:z$1.boolean().default(true).meta(g)}).meta({id:"UsageEnforcementSettings","x-revturbine-schema-persistence":hl,"x-revturbine-schema-exposure":Ri,...Uv,...hi()}),$O=nr("UsageEnforcementSettingsAnchor"),ZO=z$1.object({kind:z$1.enum(["template","slot"]).meta(g),id:z$1.string().min(1).meta(g),label:z$1.string().min(1).optional().meta(g)}).meta({id:"PlacementSettingsCapRuleGroupItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Ri}),YO=z$1.object({id:z$1.string().min(1).meta(g),group:z$1.array(ZO).min(1).meta(g),cap:z$1.object({count:z$1.number().int().min(1).meta(g),period:z$1.enum(["session","day","week","month"]).meta(g)}).meta(g)}).meta({id:"PlacementSettingsCapRule","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Ri}),WO=z$1.enum(["off","test_users","all_traffic"]).meta({id:"PlacementTestMode","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Ri}),Bv=z$1.object({capRules:z$1.array(YO).default([]).meta(g),sessionCooldownMinutes:z$1.number().int().min(0).default(30).meta(g),remindLaterMinutes:z$1.number().int().min(0).default(60).meta(g),testMode:WO.default("off").meta(g)}).meta({id:"PlacementSettingsCapState","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Ri}),pf=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({anchor_id:z$1.string().min(1).meta({...g,readOnly:true}),handle:rn.meta({...g,readOnly:true}),global_frequency_cap:Bv.nullable().default(null).meta(g),global_frequency_cap_period:z$1.enum(["hour","day","week","month","session"]).nullable().default(null).meta(g),suppress_for_paid:z$1.boolean().default(false).meta(g),suppress_for_trial:z$1.boolean().default(false).meta(g),allow_stacking:z$1.boolean().default(false).meta(g),priority_collision_strategy:z$1.enum(["highest_priority","most_recent","random"]).default("highest_priority").meta(g)}).meta({id:"PlacementSettings","x-revturbine-schema-persistence":hl,"x-revturbine-schema-exposure":Ri,...Uv,...hi()}),XO=nr("PlacementSettingsAnchor"),JO=z$1.object({field:z$1.string().min(1).meta(g),operator:z$1.enum(["eq","neq","gt","lt","gte","lte","contains","in"]).meta(g),value:z$1.string().meta(g)}).meta({id:"RevTurbineConfigSegmentsItemPredicatesItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt}),QO=z$1.object({name:z$1.string().min(1).meta(g),handle:z$1.string().min(1).meta(g),predicates:z$1.array(JO).optional().meta(g),dimension_id:z$1.string().optional().meta(g),experiment_id:z$1.string().min(1).optional().meta(g)}).meta({id:"RevTurbineConfigSegmentsItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),eA=z$1.object({unique_handle:z$1.string().min(1).meta(g),name:z$1.string().min(1).meta(g),tier_position:z$1.number().int().min(0).default(0).meta(g),sort_order:z$1.number().int().min(0).default(0).meta(g),visibility:fa.default("public").meta(g)}).meta({id:"RevTurbineConfigPlansItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),tA=z$1.object({unique_handle:z$1.string().min(1).meta(g),name:z$1.string().min(1).meta(g),sort_order:z$1.number().int().min(0).default(0).meta(g),visibility:fa.default("public").meta(g)}).meta({id:"RevTurbineConfigAddonsItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...al}),nA=z$1.object({handle:z$1.string().min(1).meta(g),plan_handle:z$1.string().min(1).meta(g),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(g),segment_handle:z$1.string().nullable().default(null).meta(g),price_amount:z$1.number().min(0).meta(g),pricing_model:Nc.meta(g),visibility:fa.default("public").meta(g),stripe_price_id:z$1.string().nullable().default(null).meta(g),price_source:Lu.meta(g)}).meta({id:"RevTurbineConfigPlanVariationsItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...pa}),rA=z$1.object({handle:z$1.string().min(1).meta(g),addon_handle:z$1.string().min(1).meta(g),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(g),segment_handle:z$1.string().nullable().default(null).meta(g),price_amount:z$1.number().min(0).meta(g),pricing_model:Nc.meta(g),visibility:fa.default("public").meta(g),stripe_price_id:z$1.string().nullable().default(null).meta(g),price_source:Lu.meta(g)}).meta({id:"RevTurbineConfigAddonVariationsItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...pa}),iA=z$1.object({handle:z$1.string().min(1).meta(g),name:z$1.string().min(1).meta(g),description:z$1.string().nullable().default(null).meta(g),is_default:z$1.boolean().default(false).meta(g),entitlement_handles:z$1.array(z$1.string()).default([]).meta(g)}).meta({id:"RevTurbineConfigSeatTypesItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),sA=z$1.object({handle:z$1.string().min(1).meta(g),entitlement_handle:z$1.string().nullable().default(null).meta(g),soft_limit_percent:z$1.number().int().min(0).nullable().default(null).meta(g),hard_limit_percent:z$1.number().int().min(0).nullable().default(null).meta(g),soft_limit_action:z$1.string().meta(g),hard_limit_action:z$1.string().meta(g),grace_period_hours:z$1.number().int().min(0).nullable().default(null).meta(g),notification_channels:z$1.array(z$1.string()).default([]).meta(g),is_active:z$1.boolean().default(true).meta(g)}).meta({id:"RevTurbineConfigEnforcementDefaultsItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),aA=z$1.object({handle:z$1.string().min(1).meta(g),global_frequency_cap:Bv.nullable().default(null).meta(g),global_frequency_cap_period:z$1.enum(["hour","day","week","month","session"]).nullable().default(null).meta(g),suppress_for_paid:z$1.boolean().default(false).meta(g),suppress_for_trial:z$1.boolean().default(false).meta(g),allow_stacking:z$1.boolean().default(false).meta(g),priority_collision_strategy:z$1.string().nullable().default(null).meta(g)}).meta({id:"RevTurbineConfigPlacementSettingsItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),oA=z$1.object({handle:z$1.string().min(1).meta(g),name:z$1.string().min(1).meta(g),category:z$1.string().nullable().default(null).meta(g),visibility_toggle:z$1.boolean().default(true).meta(g),source_type:z$1.string().nullable().default(null).meta(g)}).meta({id:"RevTurbineConfigSegmentDimensionsItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),lA=z$1.object({handle:z$1.string().min(1).meta(g),entitlement_handle:z$1.string().min(1).meta(g),meter_handle:z$1.string().min(1).meta(g),limit:z$1.number().int().min(0).nullable().default(null).meta(g),reset_period:z$1.string().nullable().default(null).meta(g)}).meta({id:"RevTurbineConfigMeterBindingsItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),cA=z$1.object({unique_handle:z$1.string().min(1).meta(g),name:z$1.string().min(1).meta(g),type:gf.meta(g),unit:z$1.string().optional().meta(g),tier_definitions:z$1.array(z$1.object({name:z$1.string(),handle:z$1.string(),description:z$1.string().optional()})).optional().meta(g)}).meta({id:"RevTurbineConfigEntitlementsItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),dA=z$1.object({id:z$1.string().min(1).meta(g),entitlement_id:z$1.string().min(1).meta(g),targets:z$1.array(mv).min(1).meta(g),segment_ids:z$1.array(z$1.string()).default([]).meta(g),kind:gf.optional().meta({...g,readOnly:true}),unit:z$1.string().optional().meta({...g,readOnly:true}),tier_name:z$1.string().optional().meta({...g,readOnly:true}),tier_description:z$1.string().optional().meta({...g,readOnly:true}),...cl.pick({enabled:true,limit_value:true,enforcement:true,tier_value:true,period_scope:true,included_count:true,seat_type_id:true,initial_grant:true,allowance_value:true,rollover_enabled:true,max_balance:true,reset_period:true,max_seats:true,rate_value:true,amount_cents:true,currency:true}).shape,current_usage:z$1.number().default(0).meta(g),allocation:Vu.optional().meta(g)}).meta({id:"RevTurbineConfigEntitlementRulesItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),uA=z$1.object({slot_id:z$1.string().min(1).meta(g),active:z$1.boolean().meta(g),triggers:z$1.array(z$1.string()).meta(g)}).meta({id:"RevTurbineConfigSlotConfigsItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),mA=z$1.object({id:z$1.string().min(1).meta(g),label:z$1.string().min(1).meta(g),description:z$1.string().meta(g),surface_type:z$1.string().meta(g),placement_handle:z$1.string().min(1).meta(g),template:z$1.string().optional().meta(g)}).meta({id:"RevTurbineConfigPlacementSlotsItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),pA=z$1.object({name:z$1.string().min(1).meta(g),type:z$1.string().optional().meta(g),required:z$1.boolean().optional().meta(g)}).meta({id:"RevTurbineConfigSurfaceTemplatesItemFieldsItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt}),fA=z$1.object({id:z$1.string().min(1).meta(g),surface_type:z$1.string().meta(g),fields:z$1.array(pA).optional().meta(g)}).meta({id:"RevTurbineConfigSurfaceTemplatesItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),hA=z$1.enum(["open_checkout_modal","navigate_to_plans","open_upgrade_modal","open_placement","book_demo","open_feature_tour","extend_trial","switch_billing_period","custom_url","dismiss","contact_sales","complete_onboarding","invite_teammate","refer_friend","verify_work_email","update_payment_method","enable_auto_renewal","manage_subscription","snooze"]).meta({id:"RevTurbineConfigUiPathActionType","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt}),gA=z$1.object({name:z$1.string().min(1).meta(g),action_type:hA.meta(g),plan_handle:z$1.string().optional().meta(g),promotion_id:z$1.string().optional().meta(g),placement_handle:z$1.string().optional().meta(g),url:z$1.string().optional().meta(g),tour_id:z$1.string().optional().meta(g),target_billing_period:z$1.enum(["monthly","annual"]).optional().meta(g),description:z$1.string().optional().meta(g)}).meta({id:"ContentUiPath","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),_A=z$1.object({id:z$1.string().meta(g),name:z$1.string().meta(g),discount:z$1.string().meta(g),type:z$1.string().meta(g),status:z$1.string().meta(g)}).meta({id:"ContentPromotion","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),bA=z$1.object({token:z$1.string().regex(/^[a-z][a-z0-9_]*$/).meta(g),label:z$1.string().min(1).meta(g),description:z$1.string().optional().meta(g),category:z$1.enum(["user","plan","usage","trial","billing","promotion","custom"]).meta(g),data_source:z$1.string().optional().meta(g),example_value:z$1.string().optional().meta(g),value_map:z$1.record(z$1.string(),z$1.string()).optional().meta(g),format:z$1.enum(["string","number","currency","percentage","date"]).optional().meta(g)}).meta({id:"RevTurbineConfigPersonalizationTokensItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),tv=z$1.object({header:z$1.string().optional().meta(g),body:z$1.string().optional().meta(g),cta_label:z$1.string().optional().meta(g),secondary_cta_label:z$1.string().optional().meta(g)}).catchall(z$1.unknown()).meta({id:"MessageBlockContent","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt}),vA=z$1.object({block_id:z$1.string().min(1).meta(g),tenant_id:z$1.string().min(1).meta(g),name:z$1.string().min(1).meta(g),surface_template_id:z$1.string().optional().meta(g),default_content:tv.meta(g),segment_overrides:z$1.array(z$1.object({segment_value_id:z$1.string(),content:tv})).optional().meta(g),child_blocks:z$1.array(z$1.object({slot:z$1.string(),block_id:z$1.string()})).optional().meta(g),tokens_used:z$1.array(z$1.string()).optional().meta(g),status:z$1.enum(["draft","active","archived"]).meta(g),created_at:z$1.string().datetime().meta({...g,readOnly:true}),updated_at:z$1.string().datetime().meta({...g,readOnly:true})}).meta({id:"MessageBlock","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),yA=z$1.object({label:z$1.string().meta(g),path:sv.meta(g),config:z$1.record(z$1.string(),z$1.string()).optional().meta(g)}).meta({id:"RevTurbineConfigStudioCtaConfig","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt}),qv=z$1.object({template_id:z$1.string().min(1).meta(g),fields:z$1.record(z$1.string(),z$1.string()).meta(g),ctas:z$1.array(yA).meta(g)}).meta({id:"RevTurbineConfigStudioPayloadSurface","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt}),Dv=z$1.object({plan_ids:z$1.array(z$1.string()).meta(g),billing_cadences:z$1.array(z$1.string()).optional().meta(g),segment_chips:z$1.array(z$1.string()).meta(g)}).meta({id:"RevTurbineConfigStudioPayloadTarget","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt}),xA=z$1.object({count:z$1.number().int().min(1).meta(g),period:z$1.enum(["session","day","week","month","lifetime"]).meta(g)}).meta({id:"RevTurbineConfigPeriodCap","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt}),Mv=z$1.object({max_per_period:xA.optional().meta(g),cooldown_days:z$1.number().int().min(0).optional().meta(g)}).meta({id:"RevTurbineConfigStudioPayloadCaps","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt}),SA=z$1.object({id:z$1.string().min(1).meta(g),target:Dv.meta(g),surfaces:z$1.array(qv).meta(g),caps:Mv.optional().meta(g),surface_slot_ids:z$1.array(z$1.string()).optional().meta(g),remind_later_minutes:z$1.number().int().min(0).nullable().optional().meta(g),created_at:z$1.string().optional().meta({...g,readOnly:true}),recommendation_strategy:z$1.enum(["next_tier_up","best_value","custom"]).optional().default("next_tier_up").meta(g),recommendation_plan_override:z$1.string().optional().meta(g)}).meta({id:"RevTurbineConfigStudioPayload","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt}),IA=z$1.discriminatedUnion("type",[z$1.object({type:z$1.literal("surface_render"),slot_id:z$1.string().min(1)}),z$1.object({type:z$1.literal("entitlement_gate"),entitlement_handle:z$1.string().min(1),tier_threshold:z$1.string().optional()}),z$1.object({type:z$1.literal("usage_threshold"),entitlement_handle:z$1.string().min(1),threshold_percent:Bc}),z$1.object({type:z$1.literal("credit_threshold"),entitlement_handle:z$1.string().min(1),threshold_percent:Bc}),z$1.object({type:z$1.literal("seat_threshold"),entitlement_handle:z$1.string().min(1),threshold_percent:Bc}),z$1.object({type:z$1.literal("trial_started"),trial_type:z$1.enum(["free","reverse"]).optional()}),z$1.object({type:z$1.literal("trial_progress"),progress_percent:z$1.number().min(1).max(100)}),z$1.object({type:z$1.literal("trial_ending"),days_before_end:z$1.number().int().min(0)}),z$1.object({type:z$1.literal("trial_ended")}),z$1.object({type:z$1.literal("trial_converted")}),z$1.object({type:z$1.literal("qualifier"),qualifier:z$1.string().min(1)})]).meta({id:"RevTurbineConfigPlacementTrigger","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt}),PA=z$1.enum(["fixed","gated","usage_credit_seat","trials","other_conversion","retention"]).meta({id:"RevTurbineConfigPlacementCategory","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt}),TA=z$1.object({id:z$1.string().min(1).meta(g),name:z$1.string().min(1).meta(g),category:PA.meta(g),trigger:IA.meta(g),payloads:z$1.array(SA).meta(g),order:z$1.number().int().min(0).meta(g)}).meta({id:"RevTurbineConfigPlacementItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),CA=z$1.object({payload_id:z$1.string().min(1).meta(g),placement_id:z$1.string().min(1).meta(g),target:Dv.meta(g),caps:Mv.optional().meta(g),remind_later_minutes:z$1.number().int().min(0).nullable().optional().meta(g),created_at:z$1.string().meta({...g,readOnly:true}),updated_at:z$1.string().datetime().optional().meta({...g,readOnly:true}),source_mode:z$1.enum(["inline","content_linked"]).meta(g),surfaces:z$1.array(qv).optional().meta(g),surface_slot_ids:z$1.array(z$1.string()).optional().meta(g),content_link:z$1.object({message_block_id:z$1.string().optional(),ui_path_id:z$1.string().optional(),promotion_id:z$1.string().optional(),content_payload_id:z$1.string().optional()}).optional().meta(g)}).meta({id:"RevTurbineConfigPlacementPayloadItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),kA=z$1.object({kind:z$1.string().min(1).meta(g),schema_version:z$1.number().int().nonnegative().meta(g),config:z$1.unknown().meta(g)}).meta({id:"RevTurbineConfigExtensionRulesItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),RA=le.merge(wv).meta({id:"RevTurbineConfigFreeTrialRuleItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...pa}),EA=le.merge(Ov).meta({id:"RevTurbineConfigReverseTrialRuleItem","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...pa}),wA=z$1.object({plans:z$1.array(eA).meta({...g,...ft}),addons:z$1.array(tA).optional().meta({...g,...al}),entitlements:z$1.array(cA).meta({...g,...ft}),entitlement_rules:z$1.array(dA).meta({...g,...ft}),segments:z$1.array(QO).meta({...g,...ft}),content_ui_paths:z$1.array(gA).meta({...g,...ft}),slot_configs:z$1.array(uA).optional().meta({...g,...ft,...Jp({since:"0.1.117",replacement:"SDK-local activation/trigger state",removeAfter:"one compatibility window",reason:"Slot activation moved to SDK-local state (plan 118 TASK-6); no longer a Playbook authoring input."})}),content_overrides:z$1.record(z$1.string(),z$1.record(z$1.string(),z$1.string())).optional().meta({...g,...ft,...Jp({since:"0.1.117",replacement:"Message Block / Placement Payload content",removeAfter:"one compatibility window",reason:"Content overrides moved to Message Block / Payload content (plan 118 TASK-6); no longer a Playbook authoring input."})}),theme:z$1.record(z$1.string(),z$1.unknown()).optional().meta({...g,...MO,...Jp({since:"0.1.111",replacement:"SDK branding argument",removeAfter:"one compatibility window",reason:"Branding is independently owned and is not Playbook strategy."})}),placement_slots:z$1.array(mA).optional().meta({...g,...ft}),message_blocks:z$1.array(vA).optional().meta({...g,...ft}),placement_payloads:z$1.array(CA).optional().meta({...g,...ft}),placements:z$1.array(TA).optional().meta({...g,...ft}),content_promotions:z$1.array(_A).optional().meta({...g,...ft}),personalization_tokens:z$1.array(bA).optional().meta({...g,...ft}),surface_templates:z$1.array(fA).optional().meta({...g,...ft}),free_trial_rules:z$1.array(RA).optional().meta({...g,...al}),reverse_trial_rules:z$1.array(EA).optional().meta({...g,...al}),plan_variations:z$1.array(nA).optional().meta({...g,...al}),addon_variations:z$1.array(rA).optional().meta({...g,...al}),extension_rules:z$1.array(kA).optional().meta({...g,...ft}),seat_types:z$1.array(iA).optional().meta({...g,...ft}),enforcement_defaults:z$1.array(sA).optional().meta({...g,...ft}),placement_settings:z$1.array(aA).optional().meta({...g,...ft}),segment_dimensions:z$1.array(oA).optional().meta({...g,...ft}),meter_bindings:z$1.array(lA).optional().meta({...g,...ft}),experiments:z$1.array(z$1.unknown()).max(0).optional().meta({...g,...pa}),signal_catalog:z$1.object({}).strict().optional().meta({...g,...pa})}).meta({id:"PlaybookBody","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft}),OA=z$1.object({artifact_type:z$1.literal("playbook").meta({...g,...wc,readOnly:true}),format_version:z$1.literal(HO).meta({...g,...wc,readOnly:true}),playbook_handle:z$1.string().min(1).default("default").meta({...g,...wc}),playbook_version_id:z$1.string().nullable().default(null).meta({...g,...df,readOnly:true}),tenant_id:z$1.string().min(1).optional().meta({...g,...uf,readOnly:true}),environment_id:z$1.string().min(1).optional().meta({...g,...uf,readOnly:true}),project_id:z$1.string().min(1).optional().meta({...g,...uf,readOnly:true}),exported_at:z$1.string().datetime().optional().meta({...g,...df,readOnly:true}),schema_version:z$1.string().min(1).optional().meta({...g,...wc,readOnly:true}),bundle_schema_version:z$1.number().int().nonnegative().optional().meta({...g,...wc,readOnly:true})}).meta({id:"PlaybookHeader","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...df}),Nv=OA.extend(wA.shape).meta({"x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft});function AA(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Hv(n){if(!AA(n))return n;let e={...n};return "artifact_type"in e||(e.artifact_type="playbook"),"version"in e&&("format_version"in e||(e.format_version=e.version),delete e.version),"change_set_id"in e&&("playbook_version_id"in e||(e.playbook_version_id=e.change_set_id),delete e.change_set_id),e}z$1.preprocess(Hv,Nv).meta({id:"Playbook","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft});z$1.preprocess(Hv,Nv.strict()).meta({id:"PlaybookStrict","x-revturbine-schema-persistence":Je,"x-revturbine-schema-exposure":Pt,...ft});({"/api/seat-type-anchors":{get:y({operationId:"listSeatTypeAnchors",requestParams:{query:te},summary:"List seat type anchors (identity registry)",tags:["config"],responses:{200:{description:"Seat type anchor list",content:{"application/json":{schema:ee(zO)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-type-anchors",persistence:{table:"seatTypes",mode:"list"}}})},"/api/config/seat-types":{get:y({operationId:"listSeatTypes",requestParams:{query:te},summary:"List seat types",tags:["config"],responses:{200:{description:"Seat type list",content:{"application/json":{schema:ee(Oc)}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"list"}}}),post:y({operationId:"createSeatType",summary:"Create seat type",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:yr(Oc)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Oc}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"create"}}})},"/api/config/seat-types/{id}":{patch:y({operationId:"updateSeatType",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Update seat type",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Oc.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Oc}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"update"}}}),delete:y({operationId:"deleteSeatType",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Delete seat type",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"delete"}}})},"/api/personalization-token-anchors":{get:y({operationId:"listPersonalizationTokenAnchors",requestParams:{query:te},summary:"List personalization token anchors (identity registry)",tags:["config"],responses:{200:{description:"Personalization token anchor list",content:{"application/json":{schema:ee(KO)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-token-anchors",persistence:{table:"personalizationTokens",mode:"list"}}})},"/api/config/personalization-tokens":{get:y({operationId:"listPersonalizationTokens",requestParams:{query:te},summary:"List personalization tokens",tags:["config"],responses:{200:{description:"Personalization token list",content:{"application/json":{schema:ee(Ac)}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"list"}}}),post:y({operationId:"createPersonalizationToken",summary:"Create personalization token",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:yr(Ac)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Ac}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"create"}}})},"/api/config/personalization-tokens/{id}":{patch:y({operationId:"updatePersonalizationToken",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Update personalization token",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Ac.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Ac}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"update"}}}),delete:y({operationId:"deletePersonalizationToken",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Delete personalization token",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"delete"}}})},"/api/config/stripe":{put:y({operationId:"upsertStripeIntegrationConfig",summary:"Create or update Stripe integration config",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:xr(mf)}}},responses:{200:{description:"Saved",content:{"application/json":{schema:mf}}}},"x-revturbine-operation":{exposure:"internal",resource:"stripe-config",persistence:{table:"stripeIntegrationConfig",mode:"upsert"}}})},"/api/config/metering":{get:y({operationId:"listMeteringConfigs",requestParams:{query:te},summary:"List metering configurations",tags:["config"],responses:{200:{description:"Metering config list",content:{"application/json":{schema:ee(jc)}}}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"list"}}}),post:y({operationId:"createMeteringConfig",summary:"Create metering configuration",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:yr(jc)}}},responses:{201:{description:"Created",content:{"application/json":{schema:jc}}}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"create"}}})},"/api/config/metering/{meteringId}":{patch:y({operationId:"updateMeteringConfig",requestParams:{path:z$1.object({meteringId:z$1.string()})},summary:"Update metering configuration",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:jc.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:jc}}}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"update"}}}),delete:y({operationId:"deleteMeteringConfig",requestParams:{path:z$1.object({meteringId:z$1.string()})},summary:"Delete metering configuration",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"delete"}}})},"/api/usage-enforcement-setting-anchors":{get:y({operationId:"listUsageEnforcementSettingsAnchors",requestParams:{query:te},summary:"List usage enforcement setting anchors (identity registry)",tags:["config"],responses:{200:{description:"Usage enforcement setting anchor list",content:{"application/json":{schema:ee($O)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement-setting-anchors",persistence:{table:"usageEnforcementSettings",mode:"list"}}})},"/api/config/usage-enforcement":{get:y({operationId:"listUsageEnforcementSettings",requestParams:{query:te},summary:"List usage enforcement settings",tags:["config"],responses:{200:{description:"Enforcement settings",content:{"application/json":{schema:ee(Fc)}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"list"}}}),post:y({operationId:"createUsageEnforcementSettings",summary:"Create usage enforcement settings",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:yr(Fc)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Fc}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"create"}}})},"/api/config/usage-enforcement/{settingsId}":{patch:y({operationId:"updateUsageEnforcementSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Update usage enforcement settings",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Fc.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Fc}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"update"}}}),delete:y({operationId:"deleteUsageEnforcementSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Delete usage enforcement settings",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"delete"}}})},"/api/placement-setting-anchors":{get:y({operationId:"listPlacementSettingsAnchors",requestParams:{query:te},summary:"List placement setting anchors (identity registry)",tags:["config"],responses:{200:{description:"Placement setting anchor list",content:{"application/json":{schema:ee(XO)}}},default:{description:"Error response",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-setting-anchors",persistence:{table:"placementSettings",mode:"list"}}})},"/api/config/placement-settings":{put:y({operationId:"upsertPlacementSettings",summary:"Create or update global placement settings",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:xr(pf)}}},responses:{200:{description:"Saved",content:{"application/json":{schema:pf}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-settings",persistence:{table:"placementSettingVersions",mode:"upsert"}}})}});var {Unrestricted:Us}=Pn,{Persisted:zv}=zn,{Internal:Kv}=Fn,jA=z$1.enum(["create","update","delete","archive","restore","reorder","duplicate","sync","publish"]).meta({id:"ChangeLogAction","x-revturbine-schema-persistence":zv,"x-revturbine-schema-exposure":Kv}),nv=le.merge(Ee).merge(Be).extend({action:jA.meta(Us),resource_type:z$1.string().min(1).max(100).meta(Us),resource_id:z$1.string().min(1).meta(Us),resource_name:z$1.string().max(200).optional().meta(Us),actor_id:z$1.string().min(1).meta(Us),actor_email:z$1.string().email().optional().meta(Us),diff:z$1.object({before:z$1.record(z$1.string(),z$1.unknown()).optional(),after:z$1.record(z$1.string(),z$1.unknown()).optional()}).optional().meta(Us),summary:z$1.string().max(1e3).optional().meta(Us),metadata:Ln.meta(Us)}).meta({id:"ChangeLogEntry","x-revturbine-schema-persistence":zv,"x-revturbine-schema-exposure":Kv});({"/api/changelog":{get:y({operationId:"listChangeLogEntries",requestParams:{query:te},summary:"List change log entries",tags:["changelog"],responses:{200:{description:"Change log entries",content:{"application/json":{schema:ee(nv)}}}},"x-revturbine-operation":{exposure:"internal",resource:"changelog",persistence:{table:"changeLogEntries",mode:"list"}}})},"/api/changelog/{entryId}":{get:y({operationId:"getChangeLogEntry",requestParams:{path:z$1.object({entryId:z$1.string()})},summary:"Get change log entry by ID",tags:["changelog"],responses:{200:{description:"Change log entry",content:{"application/json":{schema:nv}}}},"x-revturbine-operation":{exposure:"internal",resource:"changelog",persistence:{table:"changeLogEntries",mode:"get"}}})}});var {Unrestricted:Ru}=Pn,{Persisted:FA,Transient:LA}=zn,{Internal:Gv}=Fn,VA=z$1.enum(["active","suspended","archived"]).meta({id:"TenantStatus","x-revturbine-schema-persistence":LA,"x-revturbine-schema-exposure":Gv}),ma=le.merge(Ee).extend({name:Bn.meta(Ru),handle:rn.meta(Ru),status:VA.default("active").meta(Ru),metadata:Ln.meta(Ru)}).meta({id:"Tenant","x-revturbine-schema-persistence":FA,"x-revturbine-schema-exposure":Gv});({"/api/tenants":{get:y({operationId:"listTenants",requestParams:{query:te},summary:"List tenants",tags:["tenants"],responses:{200:{description:"Tenant list",content:{"application/json":{schema:ee(ma)}}}},"x-revturbine-operation":{exposure:"internal",resource:"tenants",persistence:{table:"tenants",mode:"list"}}})},"/api/tenants/{tenantId}":{get:y({operationId:"getTenant",requestParams:{path:z$1.object({tenantId:z$1.string()})},summary:"Get tenant by ID",tags:["tenants"],responses:{200:{description:"Tenant",content:{"application/json":{schema:ma}}}},"x-revturbine-operation":{exposure:"internal",resource:"tenants",persistence:{table:"tenants",mode:"get"}}}),patch:y({operationId:"updateTenant",requestParams:{path:z$1.object({tenantId:z$1.string()})},summary:"Update tenant",tags:["tenants"],requestBody:{required:true,content:{"application/json":{schema:ma.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:ma}}}},"x-revturbine-operation":{exposure:"internal",resource:"tenants",persistence:{table:"tenants",mode:"update"}}})},"/api/tenants/{tenantId}/suspend":{post:y({operationId:"suspendTenant",requestParams:{path:z$1.object({tenantId:z$1.string()})},summary:"Suspend tenant (disables all API access)",tags:["tenants"],responses:{200:{description:"Suspended",content:{"application/json":{schema:ma}}}},"x-revturbine-operation":{exposure:"internal",resource:"tenants",persistence:{table:"tenants",mode:"update"}}})},"/api/tenants/{tenantId}/reactivate":{post:y({operationId:"reactivateTenant",requestParams:{path:z$1.object({tenantId:z$1.string()})},summary:"Reactivate a suspended tenant",tags:["tenants"],responses:{200:{description:"Reactivated",content:{"application/json":{schema:ma}}}},"x-revturbine-operation":{exposure:"internal",resource:"tenants",persistence:{table:"tenants",mode:"update"}}})}});var {Unrestricted:Ti}=Pn,{Persisted:UA,Transient:$v}=zn,{Internal:Of}=Fn,BA=z$1.enum(["active","archived","locked"]).meta({id:"EnvironmentStatus","x-revturbine-schema-persistence":$v,"x-revturbine-schema-exposure":Of}),Qo=le.merge(Ee).merge(Be).extend({name:Bn.meta(Ti),handle:rn.meta(Ti),description:qa.meta(Ti),is_production:z$1.boolean().default(false).meta({...Ti,readOnly:true}),status:BA.default("active").meta(Ti),cloned_from_environment_id:z$1.string().nullable().default(null).meta({...Ti,readOnly:true}),cloned_at:An.meta({...Ti,readOnly:true}),cloned_at_sequence:z$1.number().int().min(0).nullable().default(null).meta({...Ti,readOnly:true}),requires_approval:z$1.boolean().default(false).meta(Ti),auto_deploy_on_approval:z$1.boolean().default(false).meta(Ti),created_by:z$1.string().optional().meta(Ti),metadata:Ln.meta(Ti)}).meta({id:"Environment","x-revturbine-schema-persistence":UA,"x-revturbine-schema-exposure":Of}),qA=z$1.object({source_environment_id:z$1.string().min(1),target_environment_id:z$1.string().min(1),playbook_version_ids:z$1.array(z$1.string()).optional(),strategy:z$1.enum(["all_current","selected_playbook_versions"]).default("all_current")}).meta({id:"EnvironmentPromotionRequest","x-revturbine-schema-persistence":$v,"x-revturbine-schema-exposure":Of});({"/api/environments":{get:y({operationId:"listEnvironments",requestParams:{query:te},summary:"List environments",tags:["environments"],responses:{200:{description:"Environment list",content:{"application/json":{schema:ee(Qo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"environments",persistence:{table:"environments",mode:"list"}}}),post:y({operationId:"createEnvironment",summary:"Create environment (optionally cloned from another)",tags:["environments"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({name:z$1.string().min(1).max(200),handle:z$1.string().min(1).max(100),description:z$1.string().max(500).optional(),clone_from_environment_id:z$1.string().optional(),requires_approval:z$1.boolean().optional()})}}},responses:{201:{description:"Created",content:{"application/json":{schema:Qo}}},default:{description:"Error",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"environments",persistence:{table:"environments",mode:"create"}}})},"/api/environments/{environmentId}":{get:y({operationId:"getEnvironment",requestParams:{path:z$1.object({environmentId:z$1.string()})},summary:"Get environment by ID",tags:["environments"],responses:{200:{description:"Environment",content:{"application/json":{schema:Qo}}}},"x-revturbine-operation":{exposure:"internal",resource:"environments",persistence:{table:"environments",mode:"get"}}}),patch:y({operationId:"updateEnvironment",requestParams:{path:z$1.object({environmentId:z$1.string()})},summary:"Update environment settings",tags:["environments"],requestBody:{required:true,content:{"application/json":{schema:Qo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Qo}}}},"x-revturbine-operation":{exposure:"internal",resource:"environments",persistence:{table:"environments",mode:"update"}}})},"/api/environments/{environmentId}/archive":{post:y({operationId:"archiveEnvironment",requestParams:{path:z$1.object({environmentId:z$1.string()})},summary:"Archive environment (production cannot be archived)",tags:["environments"],responses:{200:{description:"Archived",content:{"application/json":{schema:Qo}}},default:{description:"Error",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"environments",persistence:{table:"environments",mode:"update"}}})},"/api/environments/promote":{post:y({operationId:"promoteEnvironment",summary:"Promote (merge) changes from one environment to another",tags:["environments"],requestBody:{required:true,content:{"application/json":{schema:qA}}},responses:{200:{description:"Promotion result",content:{"application/json":{schema:z$1.object({promoted_count:z$1.number().int(),conflict_count:z$1.number().int(),conflicts:z$1.array(z$1.object({handle:z$1.string(),resource_type:z$1.string(),source_sequence:z$1.number().int(),target_sequence:z$1.number().int()}))})}}},default:{description:"Error",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"environments",persistence:{table:"environments",mode:"promote"}}})}});var {Unrestricted:qe,Pii:Dc}=Pn,{Transient:gs,Persisted:DA}=zn,{External:zi}=Fn,MA=z$1.enum(["milestone_version","milestone_order"]).meta({id:"SupersessionReason","x-revturbine-schema-persistence":gs,"x-revturbine-schema-exposure":zi});z$1.object({superseded_output_id:z$1.string().min(1).meta(qe),superseded_by:z$1.string().min(1).meta(qe),reason:MA.meta(qe)}).meta({id:"SupersessionRecord","x-revturbine-schema-persistence":DA,"x-revturbine-schema-exposure":zi,...Pn.Operational});var NA=z$1.enum(iv).meta({id:"EntitlementStatus","x-revturbine-schema-persistence":gs,"x-revturbine-schema-exposure":zi}),Zv=z$1.object({output_id:z$1.string().meta(qe),category:z$1.string().meta(qe),surface:z$1.object({template:z$1.string().optional().meta(qe),type:ju.meta(qe),slot_id:z$1.string().optional().meta(qe)}).meta(qe),content:z$1.record(z$1.string(),z$1.unknown()).meta(qe),promotion:z$1.record(z$1.string(),z$1.unknown()).optional().meta(qe),cta_path:z$1.record(z$1.string(),z$1.unknown()).optional().meta(qe),ui_path:z$1.record(z$1.string(),z$1.unknown()).optional().meta(qe),rule_id:z$1.string().meta(qe),decision_id:z$1.string().meta(qe),config_version:z$1.string().meta(qe),present_upsell:z$1.boolean().meta(qe),experiment_id:z$1.string().optional().meta(qe),variant_key:z$1.string().optional().meta(qe),experiment_version_id:z$1.string().optional().meta(qe)}).meta({id:"PlacementDecisionOutput","x-revturbine-schema-persistence":gs,"x-revturbine-schema-exposure":zi}),HA=z$1.object({status:NA.meta(qe),allowed:z$1.boolean().meta(qe),reason:z$1.string().optional().meta(qe),current_tier:z$1.string().optional().meta(qe),limit:z$1.number().optional().meta(qe),used:z$1.number().optional().meta(qe),remaining:z$1.number().optional().meta(qe),placement:Zv.optional().meta(qe)}).meta({id:"EntitlementCheckResult","x-revturbine-schema-persistence":gs,"x-revturbine-schema-exposure":zi});z$1.object({id:z$1.string().meta(qe),name:z$1.string().optional().meta(qe),discount:z$1.string().optional().meta(qe),type:z$1.string().optional().meta(qe),status:z$1.string().optional().meta(qe)}).meta({id:"RuntimePromotionSnapshot","x-revturbine-schema-persistence":gs,"x-revturbine-schema-exposure":zi});var zA=z$1.object({id:z$1.string().meta(Dc),anonymous_id:z$1.string().optional().meta(qe),traits:z$1.record(z$1.string(),z$1.unknown()).optional().meta(Dc)}).meta({id:"ServerEvaluationPayloadUser","x-revturbine-schema-persistence":gs,"x-revturbine-schema-exposure":zi}),KA=z$1.object({slot_id:z$1.string().optional().meta(qe),entitlement_handle:z$1.string().optional().meta(qe),plan_handle:z$1.string().optional().meta(qe),placement_handle:z$1.string().optional().meta(qe),visible:z$1.boolean().meta(qe),output:Zv.optional().meta(qe),reason_codes:z$1.array(z$1.string()).optional().meta(qe)}).meta({id:"ServerEvaluationPayloadDecisionsItem","x-revturbine-schema-persistence":gs,"x-revturbine-schema-exposure":zi}),GA=HA,$A=Sf.meta({id:"ServerEvaluationPayloadTrialStatus","x-revturbine-schema-persistence":gs,"x-revturbine-schema-exposure":zi}),ZA=z$1.object({segments:z$1.array(z$1.string()).optional().meta(qe),traits:z$1.record(z$1.string(),z$1.unknown()).optional().meta(Dc),usage_balances:z$1.record(z$1.string(),z$1.number()).optional().meta(qe)}).meta({id:"ServerEvaluationPayloadUserContext","x-revturbine-schema-persistence":gs,"x-revturbine-schema-exposure":zi});z$1.object({version:z$1.literal("1.0.0").meta(qe),request_id:z$1.string().meta(qe),tenant_id:z$1.string().meta(qe),evaluated_at:z$1.string().datetime().meta(qe),ttl_seconds:z$1.number().int().min(0).max(86400).meta(qe),user:zA.meta(Dc),decisions:z$1.array(KA).meta(qe),entitlements:z$1.record(z$1.string(),GA).optional().meta(qe),theme:z$1.record(z$1.string(),z$1.unknown()).optional().meta(qe),trial_status:$A.optional().meta(qe),user_context:ZA.optional().meta(Dc)}).meta({id:"ServerEvaluationPayload","x-revturbine-schema-persistence":gs,"x-revturbine-schema-exposure":zi});var {Unrestricted:Gt}=Pn,{Persisted:YA,Transient:Uu}=zn,{Internal:Xc}=Fn,WA=z$1.enum(["draft","awaiting_approval","approved","deploying","deployed","rejected","archived"]).meta({id:"PlaybookVersionStatus","x-revturbine-schema-persistence":Uu,"x-revturbine-schema-exposure":Xc}),Lc=le.merge(Ee).merge(Be).extend({environment_id:z$1.string().min(1).meta(Gt),name:Bn.meta(Gt),description:z$1.string().max(2e3).optional().meta(Gt),status:WA.default("draft").meta(Gt),labels:z$1.array(z$1.string()).default([]).meta(Gt),created_by:z$1.string().min(1).meta(Gt),submitted_by:z$1.string().nullable().default(null).meta({...Gt,readOnly:true}),reviewed_by:z$1.string().nullable().default(null).meta({...Gt,readOnly:true}),deployed_by:z$1.string().nullable().default(null).meta({...Gt,readOnly:true}),submitted_at:An.meta({...Gt,readOnly:true}),reviewed_at:An.meta({...Gt,readOnly:true}),deployed_at:An.meta({...Gt,readOnly:true}),base_snapshot_sequence:z$1.number().int().min(0).default(0).meta({...Gt,readOnly:true}),entry_count:z$1.number().int().min(0).default(0).meta({...Gt,readOnly:true}),conflict_count:z$1.number().int().min(0).default(0).meta({...Gt,readOnly:true}),rollback_of_playbook_version_id:z$1.string().nullable().default(null).meta(Gt),cherry_picked_from_playbook_version_id:z$1.string().nullable().default(null).meta(Gt),review_notes:z$1.string().max(2e3).optional().meta(Gt),rejection_reason:z$1.string().max(2e3).optional().meta(Gt),snapshot:z$1.record(z$1.string(),z$1.unknown()).nullable().default(null).meta({...Gt,readOnly:true}),bundle:z$1.string().nullable().default(null).meta({...Gt,readOnly:true}),metadata:Ln.meta(Gt)}).meta({id:"PlaybookVersion","x-revturbine-schema-persistence":YA,"x-revturbine-schema-exposure":Xc}),Yv=z$1.object({handle:z$1.string().meta(Gt),resource_type:z$1.string().meta(Gt),resource_name:z$1.string().optional().meta(Gt),action:z$1.enum(["create","update","delete"]).meta(Gt),has_conflict:z$1.boolean().meta(Gt)}).meta({id:"PlaybookVersionEntrySummary","x-revturbine-schema-persistence":Uu,"x-revturbine-schema-exposure":Xc}),XA=z$1.object({playbook_version_id:z$1.string().meta(Gt),entries:z$1.array(Yv).meta(Gt),total_entries:z$1.number().int().min(0).meta(Gt),total_conflicts:z$1.number().int().min(0).meta(Gt),deployable:z$1.boolean().meta(Gt)}).meta({id:"PlaybookVersionDiff","x-revturbine-schema-persistence":Uu,"x-revturbine-schema-exposure":Xc}),JA=z$1.object({playbook_version_id:z$1.string().meta(Gt),deployed_count:z$1.number().int().min(0).meta(Gt),superseded_count:z$1.number().int().min(0).meta(Gt),skipped_conflicts:z$1.number().int().min(0).meta(Gt),deployed_at:z$1.string().datetime().meta(Gt)}).meta({id:"PlaybookVersionDeployResult","x-revturbine-schema-persistence":Uu,"x-revturbine-schema-exposure":Xc});({"/api/playbook-versions/{playbookVersionId}/submit":{post:y({operationId:"submitPlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Submit playbook version for approval",tags:["playbook-versions"],responses:{200:{description:"Submitted",content:{"application/json":{schema:Lc}}},default:{description:"Error",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"update"}}})},"/api/playbook-versions/{playbookVersionId}/approve":{post:y({operationId:"approvePlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Approve playbook version (may auto-deploy if environment allows)",tags:["playbook-versions"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({review_notes:z$1.string().max(2e3).optional()})}}},responses:{200:{description:"Approved",content:{"application/json":{schema:Lc}}},default:{description:"Error",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"update"}}})},"/api/playbook-versions/{playbookVersionId}/reject":{post:y({operationId:"rejectPlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Reject playbook version",tags:["playbook-versions"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({rejection_reason:z$1.string().max(2e3)})}}},responses:{200:{description:"Rejected",content:{"application/json":{schema:Lc}}},default:{description:"Error",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"update"}}})},"/api/playbook-versions/{playbookVersionId}/deploy":{post:y({operationId:"deployPlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Deploy playbook version \u2014 activates all entries, supersedes previous versions",tags:["playbook-versions"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({force:z$1.boolean().default(false)})}}},responses:{200:{description:"Deploy result",content:{"application/json":{schema:JA}}},default:{description:"Error (conflicts exist)",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"deploy"}}})},"/api/playbook-versions/{playbookVersionId}/archive":{post:y({operationId:"archivePlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Archive (abandon) a playbook version",tags:["playbook-versions"],responses:{200:{description:"Archived",content:{"application/json":{schema:Lc}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"update"}}})},"/api/playbook-versions/{playbookVersionId}/preview":{get:y({operationId:"previewPlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Preview diff of all entries vs current state (dry-run deploy)",tags:["playbook-versions"],responses:{200:{description:"Diff preview",content:{"application/json":{schema:XA}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"preview"}}})},"/api/playbook-versions/{playbookVersionId}/conflicts":{get:y({operationId:"listPlaybookVersionConflicts",requestParams:{path:z$1.object({playbookVersionId:z$1.string()}),query:te},summary:"List entries with sequence conflicts (base_sequence \u2260 current)",tags:["playbook-versions"],responses:{200:{description:"Conflict list",content:{"application/json":{schema:ee(Yv)}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"list"}}})},"/api/playbook-versions/{playbookVersionId}/rollback":{post:y({operationId:"rollbackPlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Create a rollback playbook version that reverts a deployed one",tags:["playbook-versions"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({name:z$1.string().min(1).max(200).optional()})}}},responses:{201:{description:"Rollback PlaybookVersion created",content:{"application/json":{schema:Lc}}},default:{description:"Error",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"create"}}})},"/api/playbook-versions/{playbookVersionId}/cherry-pick":{post:y({operationId:"cherryPickEntries",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Cherry-pick individual entries from this PlaybookVersion into another",tags:["playbook-versions"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({handles:z$1.array(z$1.string()).min(1),target_playbook_version_id:z$1.string().min(1)})}}},responses:{200:{description:"Cherry-picked",content:{"application/json":{schema:z$1.object({copied_count:z$1.number().int()})}}},default:{description:"Error",content:{"application/json":{schema:dt}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"update"}}})}});var {Unrestricted:It,Pii:QA}=Pn,{Persisted:Ki}=zn,{Internal:Gi}=Fn,e1=z$1.enum(["active","revoked","rotating"]).meta({id:"ApiKeyStatus","x-revturbine-schema-persistence":Ki,"x-revturbine-schema-exposure":Gi}),Eu=le.merge(Ee).merge(Be).extend({name:Bn.meta(It),key_hash:z$1.string().min(1).meta({...QA,readOnly:true}),key_prefix:z$1.string().min(1).max(20).meta({...It,readOnly:true}),key_last4:z$1.string().length(4).meta({...It,readOnly:true}),status:e1.default("active").meta(It),last_used_at:An.meta({...It,readOnly:true}),expires_at:An.meta(It)}).meta({id:"ApiKey","x-revturbine-schema-persistence":Ki,"x-revturbine-schema-exposure":Gi}),t1=z$1.enum(["boolean","string","number","json"]).meta({id:"FlagValueType","x-revturbine-schema-persistence":Ki,"x-revturbine-schema-exposure":Gi}),Ua=le.merge(Ee).merge(Be).extend({key:z$1.string().min(1).max(100).meta(It),value_type:t1.default("boolean").meta(It),value:z$1.string().max(4e3).default("false").meta(It),description:qa.meta(It),enabled:z$1.boolean().default(true).meta(It)}).meta({id:"FeatureFlag","x-revturbine-schema-persistence":Ki,"x-revturbine-schema-exposure":Gi}),ff=le.merge(Ee).merge(Be).extend({workspace_name:z$1.string().min(1).max(200).meta(It),support_email:z$1.string().email().nullable().default(null).meta(It),timezone:z$1.string().max(50).default("UTC").meta(It),default_currency:z$1.string().length(3).default("USD").meta(It),logo_url:z$1.string().url().nullable().default(null).meta(It),activity_window_days:z$1.number().int().min(1).default(30).meta(It),activity_high_min:z$1.number().int().min(1).default(10).meta(It),activity_medium_min:z$1.number().int().min(1).default(3).meta(It),activity_low_min:z$1.number().int().min(1).default(1).meta(It)}).meta({id:"TenantConfig","x-revturbine-schema-persistence":Ki,"x-revturbine-schema-exposure":Gi}),hf=le.merge(Ee).merge(Be).extend({server_url:z$1.string().url().max(500).meta(It),api_token_hint:z$1.string().max(50).nullable().default(null).meta(It),allow_write_actions:z$1.boolean().default(false).meta(It),enabled_tools:z$1.array(z$1.string().max(100)).default([]).meta(It),enabled:z$1.boolean().default(false).meta(It)}).meta({id:"McpConfig","x-revturbine-schema-persistence":Ki,"x-revturbine-schema-exposure":Gi}),wu=le.merge(Ee).merge(Be).extend({step_key:z$1.string().min(1).max(100).meta(It),label:z$1.string().min(1).max(200).meta(It),done:z$1.boolean().default(false).meta(It),completed_at:An.meta({...It,readOnly:true})}).meta({id:"OnboardingChecklist","x-revturbine-schema-persistence":Ki,"x-revturbine-schema-exposure":Gi}),n1=z$1.enum(["user","agent","system","webhook"]).meta({id:"AuditActorType","x-revturbine-schema-persistence":Ki,"x-revturbine-schema-exposure":Gi}),r1=le.merge(Be).extend({environment_id:z$1.string().min(1).default("production").meta(It),actor_type:n1.meta(It),actor_id:z$1.string().nullable().default(null).meta(It),action:z$1.string().min(1).max(120).meta(It),object_type:z$1.string().max(120).nullable().default(null).meta(It),object_id:z$1.string().max(200).nullable().default(null).meta(It),payload:z$1.record(z$1.string(),z$1.unknown()).nullable().default(null).meta(It),occurred_at:z$1.string().datetime().meta({...It,readOnly:true})}).meta({id:"AuditEvent","x-revturbine-schema-persistence":Ki,"x-revturbine-schema-exposure":Gi}),i1=z$1.enum(["user_id","account_id","email"]).meta({id:"PlacementTestUserIdentifierType","x-revturbine-schema-persistence":Ki,"x-revturbine-schema-exposure":Gi}),Ou=le.merge(Ee).merge(Be).merge(ln).merge(fn).extend({handle:rn.meta({...It,readOnly:true}),identifier:z$1.string().min(1).max(200).meta(It),identifier_type:i1.default("user_id").meta(It),note:z$1.string().max(500).nullable().default(null).meta(It),added_by:z$1.string().meta(It)}).meta({id:"PlacementTestUser","x-revturbine-schema-persistence":Ki,"x-revturbine-schema-exposure":Gi,...hi()});({"/api/settings/api-keys":{get:y({operationId:"listApiKeys",requestParams:{query:te},summary:"List API keys for the tenant",tags:["settings"],responses:{200:{description:"API keys",content:{"application/json":{schema:ee(Eu)}}}},"x-revturbine-operation":{exposure:"internal",resource:"api-keys",persistence:{table:"apiKeys",mode:"list"}}}),post:y({operationId:"createApiKey",summary:"Create a new API key",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:yr(Eu)}}},responses:{201:{description:"API key created",content:{"application/json":{schema:Eu}}}},"x-revturbine-operation":{exposure:"internal",resource:"api-keys",persistence:{table:"apiKeys",mode:"create",writeSchema:"ApiKeySchema#writable"}}})},"/api/settings/api-keys/{keyId}":{delete:y({operationId:"revokeApiKey",requestParams:{path:z$1.object({keyId:z$1.string()})},summary:"Revoke an API key",tags:["settings"],responses:{200:{description:"API key revoked",content:{"application/json":{schema:Eu}}}},"x-revturbine-operation":{exposure:"internal",resource:"api-keys",persistence:{table:"apiKeys",mode:"delete"}}})},"/api/flags":{get:y({operationId:"listFeatureFlags",requestParams:{query:te},summary:"List feature flags for the tenant",tags:["settings"],responses:{200:{description:"Feature flags",content:{"application/json":{schema:ee(Ua)}}}},"x-revturbine-operation":{exposure:"internal",resource:"feature-flags",persistence:{table:"featureFlags",mode:"list"}}}),post:y({operationId:"createFeatureFlag",summary:"Create a feature flag",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:yr(Ua)}}},responses:{201:{description:"Feature flag created",content:{"application/json":{schema:Ua}}}},"x-revturbine-operation":{exposure:"internal",resource:"feature-flags",persistence:{table:"featureFlags",mode:"create",writeSchema:"FeatureFlagSchema#writable"}}})},"/api/flags/{flagId}":{get:y({operationId:"getFeatureFlag",requestParams:{path:z$1.object({flagId:z$1.string()})},summary:"Get a feature flag",tags:["settings"],responses:{200:{description:"Feature flag",content:{"application/json":{schema:Ua}}}},"x-revturbine-operation":{exposure:"internal",resource:"feature-flags",persistence:{table:"featureFlags",mode:"get"}}}),put:y({operationId:"updateFeatureFlag",requestParams:{path:z$1.object({flagId:z$1.string()})},summary:"Update a feature flag",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:xr(Ua).partial()}}},responses:{200:{description:"Feature flag updated",content:{"application/json":{schema:Ua}}}},"x-revturbine-operation":{exposure:"internal",resource:"feature-flags",persistence:{table:"featureFlags",mode:"update",writeSchema:"FeatureFlagSchema#writable"}}}),delete:y({operationId:"deleteFeatureFlag",requestParams:{path:z$1.object({flagId:z$1.string()})},summary:"Delete a feature flag",tags:["settings"],responses:{200:{description:"Feature flag deleted",content:{"application/json":{schema:Ua}}}},"x-revturbine-operation":{exposure:"internal",resource:"feature-flags",persistence:{table:"featureFlags",mode:"delete"}}})},"/api/settings/tenant-config":{put:y({operationId:"updateTenantConfig",summary:"Update tenant configuration",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:xr(ff).partial()}}},responses:{200:{description:"Tenant config updated",content:{"application/json":{schema:ff}}}},"x-revturbine-operation":{exposure:"internal",resource:"tenant-config",persistence:{table:"tenantConfigs",mode:"update",writeSchema:"TenantConfigSchema#writable"}}})},"/api/settings/mcp":{put:y({operationId:"updateMcpConfig",summary:"Update MCP config",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:xr(hf).partial()}}},responses:{200:{description:"MCP config updated",content:{"application/json":{schema:hf}}}},"x-revturbine-operation":{exposure:"internal",resource:"mcp-config",persistence:{table:"mcpConfigs",mode:"update",writeSchema:"McpConfigSchema#writable"}}})},"/api/settings/onboarding":{get:y({operationId:"listOnboardingSteps",requestParams:{query:te},summary:"List onboarding checklist steps",tags:["settings"],responses:{200:{description:"Onboarding steps",content:{"application/json":{schema:ee(wu)}}}},"x-revturbine-operation":{exposure:"internal",resource:"onboarding",persistence:{table:"onboardingChecklist",mode:"list"}}})},"/api/settings/onboarding/{stepId}":{get:y({operationId:"getOnboardingStep",requestParams:{path:z$1.object({stepId:z$1.string()})},summary:"Get an onboarding step",tags:["settings"],responses:{200:{description:"Onboarding step",content:{"application/json":{schema:wu}}}},"x-revturbine-operation":{exposure:"internal",resource:"onboarding",persistence:{table:"onboardingChecklist",mode:"get"}}}),put:y({operationId:"updateOnboardingStep",requestParams:{path:z$1.object({stepId:z$1.string()})},summary:"Update an onboarding step",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:xr(wu).partial()}}},responses:{200:{description:"Onboarding step updated",content:{"application/json":{schema:wu}}}},"x-revturbine-operation":{exposure:"internal",resource:"onboarding",persistence:{table:"onboardingChecklist",mode:"update",writeSchema:"OnboardingChecklistSchema#writable"}}})},"/api/settings/audit-events":{get:y({operationId:"listAuditEvents",requestParams:{query:te},summary:"List audit events for the tenant",tags:["settings"],responses:{200:{description:"Audit events",content:{"application/json":{schema:ee(r1)}}}},"x-revturbine-operation":{exposure:"internal",resource:"audit-events",persistence:{table:"auditEvents",mode:"list"}}})},"/api/config/placement-test-users":{get:y({operationId:"listPlacementTestUsers",requestParams:{query:te},summary:"List placement test users for the tenant",tags:["settings"],responses:{200:{description:"Placement test users",content:{"application/json":{schema:ee(Ou)}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-test-users",persistence:{table:"placementTestUsers",mode:"list"}}}),post:y({operationId:"createPlacementTestUser",summary:"Add a placement test user",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:yr(Ou)}}},responses:{201:{description:"Placement test user created",content:{"application/json":{schema:Ou}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-test-users",persistence:{table:"placementTestUsers",mode:"create",writeSchema:"PlacementTestUserSchema#writable"}}})},"/api/config/placement-test-users/{testUserId}":{delete:y({operationId:"deletePlacementTestUser",requestParams:{path:z$1.object({testUserId:z$1.string()})},summary:"Remove a placement test user",tags:["settings"],responses:{200:{description:"Placement test user removed",content:{"application/json":{schema:Ou}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-test-users",persistence:{table:"placementTestUsers",mode:"delete"}}})}});var {Unrestricted:oe,Pii:wr}=Pn,{Persisted:$r,Transient:Af}=zn,{Internal:pr}=Fn,s1=z$1.enum(["user","admin"]).meta({id:"UserRole","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});le.merge(Ee).extend({name:Bn.meta(oe),email:z$1.string().email().meta(wr),email_verified:z$1.boolean().default(false).meta(oe),image:z$1.string().url().nullable().default(null).meta(wr),role:s1.default("user").meta(oe),banned:z$1.boolean().default(false).meta({...oe,readOnly:true}),ban_reason:z$1.string().nullable().default(null).meta({...oe,readOnly:true}),ban_expires:An.meta({...oe,readOnly:true}),two_factor_enabled:z$1.boolean().default(false).meta({...oe,readOnly:true})}).meta({id:"AuthUser","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});le.merge(Ee).extend({expires_at:z$1.string().datetime().meta(oe),token:z$1.string().min(1).meta({...wr,readOnly:true}),ip_address:z$1.string().nullable().default(null).meta(wr),user_agent:z$1.string().nullable().default(null).meta(wr),user_id:z$1.string().min(1).meta({...oe,readOnly:true}),active_organization_id:z$1.string().nullable().default(null).meta(oe),impersonated_by:z$1.string().nullable().default(null).meta({...oe,readOnly:true})}).meta({id:"AuthSession","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});le.merge(Ee).extend({account_id:z$1.string().min(1).meta(oe),provider_id:z$1.string().min(1).meta(oe),user_id:z$1.string().min(1).meta({...oe,readOnly:true}),access_token:z$1.string().nullable().default(null).meta({...wr,readOnly:true}),refresh_token:z$1.string().nullable().default(null).meta({...wr,readOnly:true}),id_token:z$1.string().nullable().default(null).meta({...wr,readOnly:true}),access_token_expires_at:An.meta({...oe,readOnly:true}),refresh_token_expires_at:An.meta({...oe,readOnly:true}),scope:z$1.string().nullable().default(null).meta(oe),password:z$1.string().nullable().default(null).meta({...wr,readOnly:true})}).meta({id:"AuthAccount","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});le.merge(Ee).extend({identifier:z$1.string().min(1).meta(wr),value:z$1.string().min(1).meta({...wr,readOnly:true}),expires_at:z$1.string().datetime().meta(oe)}).meta({id:"AuthVerification","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});le.extend({secret:z$1.string().min(1).meta({...wr,readOnly:true}),backup_codes:z$1.string().min(1).meta({...wr,readOnly:true}),user_id:z$1.string().min(1).meta({...oe,readOnly:true}),verified:z$1.boolean().default(false).meta({...oe,readOnly:true})}).meta({id:"AuthTwoFactor","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});le.extend({name:Bn.meta(oe),slug:z$1.string().min(1).max(100).nullable().default(null).meta(oe),logo:z$1.string().url().nullable().default(null).meta(oe),created_at:z$1.string().datetime().meta({...oe,readOnly:true}),metadata:z$1.string().nullable().default(null).meta(oe)}).meta({id:"AuthOrganization","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});var Wv=z$1.enum(["viewer","collaborator","approver","admin"]).meta({id:"Role","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});var Xv=z$1.enum(["tenant","users","plans","entitlements","placements","targeting","content","experiments","billing","audit","mcp","api_tokens","settings"]).meta({id:"PermissionResource","x-revturbine-schema-persistence":Af,"x-revturbine-schema-exposure":pr}),Jv=z$1.enum(["read","create","update","delete","publish","approve","invite","manage_roles"]).meta({id:"PermissionAction","x-revturbine-schema-persistence":Af,"x-revturbine-schema-exposure":pr});z$1.object({resource:Xv,action:Jv}).meta({id:"Permission","x-revturbine-schema-persistence":Af,"x-revturbine-schema-exposure":pr});var a1=["tenant","plans","entitlements","placements","targeting","content","experiments","audit","settings"],o1=["plans","entitlements","placements","targeting","content","experiments"],l1=["plans","entitlements","placements","targeting","content","experiments"],c1=["tenant","users","plans","entitlements","placements","targeting","content","experiments","billing","audit","mcp","api_tokens","settings"],d1=["read","create","update","delete","publish","approve","invite","manage_roles"];function Bu(n,e){return n.flatMap(t=>e.map(r=>({resource:t,action:r})))}var u1=Bu(a1,["read"]),m1=[...u1,...Bu(o1,["create","update"])];[...m1,...Bu(l1,["publish","approve","delete"])];Bu(c1,d1);var p1=Xv.options.flatMap(n=>Jv.options.map(e=>`${n}:${e}`));z$1.enum(p1).meta({id:"McpTokenScope","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});le.extend({organization_id:z$1.string().min(1).meta({...oe,readOnly:true}),user_id:z$1.string().min(1).meta({...oe,readOnly:true}),role:Wv.default("viewer").meta(oe),created_at:z$1.string().datetime().meta({...oe,readOnly:true})}).meta({id:"AuthMember","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});var f1=z$1.enum(["pending","accepted","rejected","canceled","expired"]).meta({id:"InvitationStatus","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});le.extend({organization_id:z$1.string().min(1).meta({...oe,readOnly:true}),email:z$1.string().email().meta(wr),role:Wv.nullable().default(null).meta(oe),status:f1.default("pending").meta(oe),expires_at:z$1.string().datetime().meta(oe),created_at:z$1.string().datetime().meta({...oe,readOnly:true}),inviter_id:z$1.string().min(1).meta({...oe,readOnly:true})}).meta({id:"AuthInvitation","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});le.extend({name:z$1.string().max(200).nullable().default(null).meta(oe),public_key:z$1.string().min(1).meta({...wr,readOnly:true}),user_id:z$1.string().min(1).meta({...oe,readOnly:true}),credential_id:z$1.string().min(1).meta({...oe,readOnly:true}),counter:z$1.number().int().default(0).meta({...oe,readOnly:true}),device_type:z$1.string().min(1).meta(oe),backed_up:z$1.boolean().default(false).meta(oe),transports:z$1.string().nullable().default(null).meta(oe),created_at:z$1.string().datetime().meta({...oe,readOnly:true}),aaguid:z$1.string().nullable().default(null).meta(oe)}).meta({id:"AuthPasskey","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});le.merge(Ee).extend({config_id:z$1.string().min(1).meta(oe),name:z$1.string().max(200).nullable().default(null).meta(oe),start:z$1.string().nullable().default(null).meta(oe),reference_id:z$1.string().min(1).meta(oe),prefix:z$1.string().nullable().default(null).meta(oe),key:z$1.string().min(1).meta({...wr,readOnly:true}),refill_interval:z$1.number().int().nullable().default(null).meta(oe),refill_amount:z$1.number().int().nullable().default(null).meta(oe),last_refill_at:An.meta({...oe,readOnly:true}),enabled:z$1.boolean().default(true).meta(oe),rate_limit_enabled:z$1.boolean().default(false).meta(oe),rate_limit_time_window:z$1.number().int().nullable().default(null).meta(oe),rate_limit_max:z$1.number().int().nullable().default(null).meta(oe),request_count:z$1.number().int().default(0).meta({...oe,readOnly:true}),remaining:z$1.number().int().nullable().default(null).meta({...oe,readOnly:true}),last_request:An.meta({...oe,readOnly:true}),expires_at:An.meta(oe),permissions:z$1.string().nullable().default(null).meta(oe),metadata:z$1.string().nullable().default(null).meta(oe)}).meta({id:"AuthApiKey","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});le.extend({issuer:z$1.string().min(1).meta(oe),oidc_config:z$1.string().nullable().default(null).meta(oe),saml_config:z$1.string().nullable().default(null).meta(oe),user_id:z$1.string().min(1).meta({...oe,readOnly:true}),provider_id:z$1.string().min(1).meta(oe),organization_id:z$1.string().nullable().default(null).meta(oe),domain:z$1.string().min(1).meta(oe)}).meta({id:"AuthSsoProvider","x-revturbine-schema-persistence":$r,"x-revturbine-schema-exposure":pr});var Qv="0.2.85";var qu=/^[a-z0-9._]{1,100}$/;var et={Persisted:"persisted",Transient:"transient"},Ze={Internal:"internal",External:"external"},Me={Pii:{"x-revturbine-data-classification":"pii"},Financial:{"x-revturbine-data-classification":"financial"},Unrestricted:{"x-revturbine-data-classification":"unrestricted"},Operational:{"x-revturbine-data-classification":"operational"}};var ey="x-revturbine-schema-exposure",_1="readOnly",b1="x-revturbine-decision-only",Du={[b1]:true},Ar={[ey]:Ze.External},jf={[ey]:Ze.Internal};function qn(n){let e={};for(let[t,r]of Object.entries(n.shape)){if(typeof r!="object"||r===null)continue;r.meta()?.[_1]===true||(e[t]=r);}return z$1.object(e)}function Kn(n){let e=qn(n),t=e.shape.handle;return t&&typeof t.regex=="function"?e.extend({handle:t.regex(qu)}):e}var {Unrestricted:sr}=Me,{Transient:jr,Persisted:v1}=et,{Internal:Da,External:_s}=Ze;z$1.object({page:z$1.coerce.number().int().min(1).default(1).meta(sr),per_page:z$1.coerce.number().int().min(1).max(100).default(25).meta(sr)}).meta({id:"PaginationParams","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":_s});var Ff=n=>z$1.object({items:z$1.array(n).meta(sr),total:z$1.number().int().min(0).meta(sr),page:z$1.number().int().min(1).meta(sr),per_page:z$1.number().int().min(1).meta(sr),has_more:z$1.boolean().meta(sr)}).meta({id:"PaginatedResponse","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":_s}),$=z$1.object({created_at:z$1.string().datetime().meta({...sr,readOnly:true}),updated_at:z$1.string().datetime().meta({...sr,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":_s}),z=z$1.object({id:z$1.string().min(1).meta({...sr,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":_s}),ne=z$1.object({tenant_id:z$1.string().min(1,"tenant_id is required").meta({...sr,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":Da});z$1.enum(["monthly","annual","quarterly","one_time","usage_based"]).meta({id:"BillingCadence","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":_s});var Jc=z$1.enum(["banner","modal","tooltip","sidebar","inline","toast","fullscreen","email","sms","push","in_page","button","full_page","agent","cli","custom"]).meta({id:"SurfaceType","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":_s}),Qc=["allowed","limited","denied"];z$1.enum(["presented","clicked","converted","dismissed","reminded","suppressed"]).meta({id:"PresentationOutcome","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":_s});var gl=z$1.enum(["feature","capability_tier","usage_limit","price_per_unit","rate_limit","credits","seat"]).meta({id:"EntitlementType","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":_s}),Lf=z$1.enum(["usd","eur","gbp"]).default("usd").meta({id:"Currency","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":_s});z$1.union([z$1.boolean(),z$1.number(),z$1.string()]).meta({id:"FeatureFlagValue","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":Da});var Bt=z$1.string().min(1).max(200),st=z$1.string().min(1).max(100),ai=z$1.string().max(500).optional(),Tt=z$1.record(z$1.string(),z$1.unknown()).default({}),ba=z$1.number().int().min(10).max(100).multipleOf(10),qt=z$1.string().datetime().nullable().default(null),gt=z$1.object({environment_id:z$1.string().min(1).default("production").meta({...sr,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":Da}),Ct=z$1.object({playbook_version_id:z$1.string().nullable().default(null).meta(sr),is_current:z$1.boolean().default(true).meta({...sr,readOnly:true}),is_deleted:z$1.boolean().default(false).meta({...sr,readOnly:true}),delete_date:z$1.string().datetime().nullable().default(null).meta({...sr,readOnly:true}),sequence:z$1.number().int().min(1).default(1).meta({...sr,readOnly:true}),base_sequence:z$1.number().int().nullable().default(null).meta({...sr,readOnly:true})}).meta({id:"null","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":Da}),P1=z.merge($).merge(ne).merge(gt).extend({handle:st.meta({...sr,readOnly:true}),active:z$1.boolean().default(true).meta({...sr,readOnly:true})});function cn(n){return P1.meta({id:n,"x-revturbine-schema-persistence":v1,"x-revturbine-schema-exposure":Da})}var _l=z$1.enum(["info","warning","critical"]).meta({id:"Severity","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":Da}),Vf=z$1.enum(["button","plans_page_ctas","plans_page_full","inline_gate_message","tooltip","in_page_card","usage_counter","credit_counter","trial_counter","banner","modal_optional","modal_blocking","toast","email","sms","push","cli","agent_connector","custom_in_app"]).meta({id:"StudioSurfaceType","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":Da}),bl=z$1.enum(["open_checkout","view_plans","book_demo","contact_sales","complete_onboarding","invite_teammate","refer_friend","verify_work_email","update_payment_method","enable_auto_renewal","manage_subscription","switch_billing_period","extend_trial","open_rt_placement","dismiss","snooze","custom"]).meta({id:"CtaActionType","x-revturbine-schema-persistence":jr,"x-revturbine-schema-exposure":_s});var Ne={Playbook:"playbook",Branding:"branding",Billing:"billing",Metering:"metering",CustomerOperations:"customer_operations",EventIngestion:"event_ingestion"},Zr={Customer:"customer",Stripe:"stripe",CodeConstant:"code-constant",Runtime:"runtime"},T1="x-revturbine-context",C1="x-revturbine-in-config",k1="x-revturbine-sdk-input",R1="x-revturbine-source",E1="x-revturbine-deprecation",w1={[Ne.Playbook]:Zr.Customer,[Ne.Branding]:Zr.Customer,[Ne.Billing]:Zr.Stripe,[Ne.Metering]:Zr.Customer,[Ne.CustomerOperations]:Zr.Runtime,[Ne.EventIngestion]:Zr.Runtime};function ut(n,e){return {[T1]:n,[C1]:e.inConfig??n===Ne.Playbook,[k1]:e.sdkInput,[R1]:e.source??w1[n]}}function ed(n){return {deprecated:true,[E1]:{since:n.since,replacement:n.replacement,remove_after:n.removeAfter,reason:n.reason}}}var Uf={Named:"named",Minted:"minted"},ty="x-revturbine-schema-identity";function Tn(n="handle"){return {[ty]:{kind:Uf.Named,handleField:n}}}function rr(n="handle"){return {[ty]:{kind:Uf.Minted,handleField:n}}}var B=n=>z$1.object({items:z$1.array(n)}),Oe=z$1.object({error:z$1.string(),code:z$1.string(),request_id:z$1.string()}),b=n=>n,q=z$1.object({page:z$1.number().int().min(1).default(1).optional(),per_page:z$1.number().int().min(1).max(100).default(25).optional(),sort:z$1.string().optional(),order:z$1.enum(["asc","desc"]).default("asc").optional(),include_deleted:z$1.boolean().default(false).optional()});var{Unrestricted:zt,Financial:Mu}=Me,{Persisted:td,Transient:Nu}=et,{External:Ds}=Ze,O1=ut(Ne.Playbook,{sdkInput:true}),A1=ut(Ne.Playbook,{sdkInput:false}),Bf=ut(Ne.Billing,{sdkInput:false}),bs=z$1.enum(["public","unlisted","legacy"]).meta({id:"PlanVisibility","x-revturbine-schema-persistence":Nu,"x-revturbine-schema-exposure":Ds}),Ga=z$1.enum(["flat","per_unit","tiered","metered"]).meta({id:"PricingModel","x-revturbine-schema-persistence":Nu,"x-revturbine-schema-exposure":Ds}),vl=z$1.enum(["stripe","static"]).meta({id:"PriceSource","x-revturbine-schema-persistence":Nu,"x-revturbine-schema-exposure":Ds}),Ma=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...zt,readOnly:true}),name:Bt.meta(zt),handle:st.meta(zt),tier_position:z$1.number().int().min(0).default(0).meta(zt),sort_order:z$1.number().int().default(0).meta(zt),visibility:bs.default("public").meta(zt),metadata:Tt.meta(zt)}).meta({id:"Plan","x-revturbine-schema-persistence":td,"x-revturbine-schema-exposure":Ds,...O1,...Tn()}),j1=cn("PlanAnchor"),Na=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...zt,readOnly:true}),handle:st.meta({...zt,readOnly:true}),plan_id:z$1.string().min(1).meta(zt),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(zt),segment_id:z$1.string().nullable().default(null).meta(zt),price_amount:z$1.number().min(0).meta(Mu),pricing_model:Ga.meta(zt),visibility:bs.default("public").meta(zt),stripe_price_id:z$1.string().optional().meta(zt),price_source:vl.default("static").meta(zt)}).meta({id:"PlanVariation","x-revturbine-schema-persistence":td,"x-revturbine-schema-exposure":Ds,...Bf,...rr()}),F1=cn("PlanVariationAnchor"),Ha=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...zt,readOnly:true}),name:Bt.meta(zt),handle:st.meta(zt),sort_order:z$1.number().int().default(0).meta(zt),visibility:bs.default("public").meta(zt),metadata:Tt.meta(zt)}).meta({id:"AddOn","x-revturbine-schema-persistence":td,"x-revturbine-schema-exposure":Ds,...A1,...Tn()}),L1=cn("AddOnAnchor"),za=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...zt,readOnly:true}),handle:st.meta({...zt,readOnly:true}),addon_id:z$1.string().min(1).meta(zt),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(zt),segment_id:z$1.string().nullable().default(null).meta(zt),price_amount:z$1.number().min(0).meta(Mu),pricing_model:Ga.meta(zt),visibility:bs.default("public").meta(zt),stripe_price_id:z$1.string().optional().meta(zt),price_source:vl.default("static").meta(zt)}).meta({id:"AddOnVariation","x-revturbine-schema-persistence":td,"x-revturbine-schema-exposure":Ds,...Bf,...rr()}),V1=cn("AddOnVariationAnchor"),ny=z$1.enum(["monthly","annual","one_time","custom"]).meta({id:"StripePriceBillingPeriod","x-revturbine-schema-persistence":Nu,"x-revturbine-schema-exposure":Ds}),Ka=z.merge($).merge(ne).extend({stripe_price_id:z$1.string().min(1).meta(zt),stripe_product_id:z$1.string().min(1).meta(zt),billing_period:ny.meta(zt),unit_amount_cents:z$1.number().int().min(0).nullable().default(null).meta(Mu),currency:Lf.meta(Mu),pricing_model:Ga.meta(zt),nickname:z$1.string().nullable().default(null).meta(zt),is_mock:z$1.boolean().default(false).meta(zt),last_updated_from_stripe:qt.meta(zt)}).meta({id:"StripePrice","x-revturbine-schema-persistence":td,"x-revturbine-schema-exposure":Ds,...Bf});var U1=qn(Ma),B1=qn(Na),q1=qn(Ha),D1=qn(za),M1=qn(Ka);({"/api/plan-anchors":{get:b({operationId:"listPlanAnchors",requestParams:{query:q},summary:"List plan anchors (identity registry)",tags:["plans"],responses:{200:{description:"Plan anchor list",content:{"application/json":{schema:B(j1)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"plan-anchors",persistence:{table:"plans",mode:"list"}}})},"/api/plans":{get:b({operationId:"listPlans",requestParams:{query:q},summary:"List plans",tags:["plans"],responses:{200:{description:"Plan list response",content:{"application/json":{schema:B(Ma)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"list"}}}),post:b({operationId:"createPlan",summary:"Create plan",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Kn(Ma)}}},responses:{201:{description:"Created plan",content:{"application/json":{schema:Ma}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"create"}}})},"/api/plans/{planId}":{get:b({operationId:"getPlan",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Get plan by ID",tags:["plans"],responses:{200:{description:"Plan detail",content:{"application/json":{schema:Ma}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"get"}}}),patch:b({operationId:"updatePlan",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Update plan",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:U1}}},responses:{200:{description:"Updated plan",content:{"application/json":{schema:Ma}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"update"}}}),delete:b({operationId:"deletePlan",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Delete plan",tags:["plans"],responses:{204:{description:"Plan deleted"},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"delete"}}})},"/api/plans/reorder":{post:b({operationId:"reorderPlans",summary:"Reorder plans",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({ids:z$1.array(z$1.string())})}}},responses:{200:{description:"Reordered"}},"x-revturbine-operation":{exposure:"external",resource:"plans",persistence:{table:"planVersions",mode:"reorder"}}})},"/api/plan-variation-anchors":{get:b({operationId:"listPlanVariationAnchors",requestParams:{query:q},summary:"List plan variation anchors (identity registry)",tags:["plans"],responses:{200:{description:"Plan variation anchor list",content:{"application/json":{schema:B(F1)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"plan-variation-anchors",persistence:{table:"planVariations",mode:"list"}}})},"/api/plans/{planId}/variations":{get:b({operationId:"listPlanVariations",requestParams:{path:z$1.object({planId:z$1.string()}),query:q},summary:"List plan variations",tags:["plans"],responses:{200:{description:"Plan variations",content:{"application/json":{schema:B(Na)}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"list"}}}),post:b({operationId:"createPlanVariation",requestParams:{path:z$1.object({planId:z$1.string()})},summary:"Create plan variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Kn(Na)}}},responses:{201:{description:"Created plan variation",content:{"application/json":{schema:Na}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"create"}}})},"/api/plan-variations/{variationId}":{get:b({operationId:"getPlanVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Get plan variation by ID",tags:["plans"],responses:{200:{description:"Plan variation detail",content:{"application/json":{schema:Na}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"get"}}}),patch:b({operationId:"updatePlanVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Update plan variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:B1}}},responses:{200:{description:"Updated plan variation",content:{"application/json":{schema:Na}}}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"update"}}}),delete:b({operationId:"deletePlanVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Delete plan variation",tags:["plans"],responses:{204:{description:"Plan variation deleted"}},"x-revturbine-operation":{exposure:"external",resource:"plan-variations",persistence:{table:"planVariationVersions",mode:"delete"}}})},"/api/addon-anchors":{get:b({operationId:"listAddOnAnchors",requestParams:{query:q},summary:"List add-on anchors (identity registry)",tags:["plans"],responses:{200:{description:"Add-on anchor list",content:{"application/json":{schema:B(L1)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"addon-anchors",persistence:{table:"addons",mode:"list"}}})},"/api/addons":{get:b({operationId:"listAddOns",requestParams:{query:q},summary:"List add-ons",tags:["plans"],responses:{200:{description:"Add-on list",content:{"application/json":{schema:B(Ha)}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"list"}}}),post:b({operationId:"createAddOn",summary:"Create add-on",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Kn(Ha)}}},responses:{201:{description:"Created add-on",content:{"application/json":{schema:Ha}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"create"}}})},"/api/addons/{addonId}":{get:b({operationId:"getAddOn",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Get add-on by ID",tags:["plans"],responses:{200:{description:"Add-on detail",content:{"application/json":{schema:Ha}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"get"}}}),patch:b({operationId:"updateAddOn",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Update add-on",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:q1}}},responses:{200:{description:"Updated add-on",content:{"application/json":{schema:Ha}}}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"update"}}}),delete:b({operationId:"deleteAddOn",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Delete add-on",tags:["plans"],responses:{204:{description:"Add-on deleted"}},"x-revturbine-operation":{exposure:"external",resource:"addons",persistence:{table:"addonVersions",mode:"delete"}}})},"/api/addon-variation-anchors":{get:b({operationId:"listAddOnVariationAnchors",requestParams:{query:q},summary:"List add-on variation anchors (identity registry)",tags:["plans"],responses:{200:{description:"Add-on variation anchor list",content:{"application/json":{schema:B(V1)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"addon-variation-anchors",persistence:{table:"addonVariations",mode:"list"}}})},"/api/addons/{addonId}/variations":{get:b({operationId:"listAddOnVariations",requestParams:{path:z$1.object({addonId:z$1.string()}),query:q},summary:"List add-on variations",tags:["plans"],responses:{200:{description:"Add-on variations",content:{"application/json":{schema:B(za)}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"list"}}}),post:b({operationId:"createAddOnVariation",requestParams:{path:z$1.object({addonId:z$1.string()})},summary:"Create add-on variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Kn(za)}}},responses:{201:{description:"Created variation",content:{"application/json":{schema:za}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"create"}}})},"/api/addon-variations/{variationId}":{get:b({operationId:"getAddOnVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Get add-on variation by ID",tags:["plans"],responses:{200:{description:"Add-on variation detail",content:{"application/json":{schema:za}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"get"}}}),patch:b({operationId:"updateAddOnVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Update add-on variation",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:D1}}},responses:{200:{description:"Updated variation",content:{"application/json":{schema:za}}}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"update"}}}),delete:b({operationId:"deleteAddOnVariation",requestParams:{path:z$1.object({variationId:z$1.string()})},summary:"Delete add-on variation",tags:["plans"],responses:{204:{description:"Variation deleted"}},"x-revturbine-operation":{exposure:"external",resource:"addon-variations",persistence:{table:"addonVariationVersions",mode:"delete"}}})},"/api/stripe-prices":{get:b({operationId:"listStripePrices",requestParams:{query:q},summary:"List Stripe prices",tags:["plans"],responses:{200:{description:"Stripe price list",content:{"application/json":{schema:B(Ka)}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"list"}}}),post:b({operationId:"createStripePrice",summary:"Create Stripe price",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:Kn(Ka)}}},responses:{201:{description:"Created Stripe price",content:{"application/json":{schema:Ka}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"create"}}})},"/api/stripe-prices/{id}":{get:b({operationId:"getStripePrice",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Get Stripe price by ID",tags:["plans"],responses:{200:{description:"Stripe price detail",content:{"application/json":{schema:Ka}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"get"}}}),patch:b({operationId:"updateStripePrice",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Update Stripe price",tags:["plans"],requestBody:{required:true,content:{"application/json":{schema:M1}}},responses:{200:{description:"Updated Stripe price",content:{"application/json":{schema:Ka}}}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"update"}}}),delete:b({operationId:"deleteStripePrice",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Delete Stripe price",tags:["plans"],responses:{204:{description:"Stripe price deleted"}},"x-revturbine-operation":{exposure:"external",resource:"stripe-prices",persistence:{table:"stripePrices",mode:"delete"}}})}});var {Unrestricted:ye}=Me,{Persisted:Df,Transient:oi}=et,{Internal:ry,External:Yr}=Ze,iy=ut(Ne.Playbook,{sdkInput:true}),H1=ut(Ne.Playbook,{inConfig:false,sdkInput:false}),Mf=z$1.enum(["per_month","per_year","per_billing_period","lifetime","concurrent","per_instance","per_second","per_minute","per_hour","per_6_hours","per_day","per_week"]).meta({id:"UsagePeriodScope","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr}),yl=z$1.enum(["account_pool","per_instance","per_user","per_user_pooled"]).meta({id:"UsageAllocation","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr}),sy=z$1.enum(Qc).meta({id:"EntitlementGrantStatus","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr}),ay=z$1.enum(["rule","user_context","override"]).meta({id:"EntitlementGrantSource","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr}),Nf=z$1.enum(["hard_block","soft_block","degrade","allow_overage"]).meta({id:"EnforcementMode","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr}),Za=z$1.object({entitlement_id:z$1.string().min(1).meta(ye),entitlement_handle:z$1.string().min(1).meta(ye),status:sy.meta(ye),limit:z$1.number().optional().meta(ye),used:z$1.number().optional().meta(ye),allocation:yl.optional().meta(ye),enforcement:Nf.optional().meta(ye),source:ay.optional().meta(ye),plan_id:z$1.string().optional().meta(ye),segment_id:z$1.string().optional().meta(ye),seat_type_id:z$1.string().optional().meta(ye),rule_id:z$1.string().optional().meta(ye)}).meta({id:"EntitlementGrant","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr,...Me.Operational});z$1.object({account:z$1.record(z$1.string(),Za).optional().meta(ye),instance:z$1.record(z$1.string(),Za).optional().meta(ye),user:z$1.record(z$1.string(),Za).optional().meta(ye)}).meta({id:"EntitlementGrantSet","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr,...Me.Operational});var oy=z$1.enum(["public","non_public"]).meta({id:"RuleVisibility","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr}),ly=z$1.enum(["plan","plan_variation","addon","addon_variation"]).meta({id:"EntitlementRuleTargetKind","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr}),zu=z$1.object({kind:ly.meta(ye),id:z$1.string().min(1).meta(ye)}).meta({id:"EntitlementRuleTarget","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr}),cy=z$1.enum(["month","day","week","quarter","year","billing_period","hour","six_hours"]).meta({id:"EntitlementRulePeriodUnit","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr}),$a=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...ye,readOnly:true}),name:Bt.meta(ye),handle:st.meta(ye),customer_facing_description:z$1.string().max(500).optional().meta(ye),type:gl.meta(ye),unit:z$1.string().max(100).optional().meta(ye),period_scope:Mf.optional().meta(ye),allocation:yl.optional().meta(ye),tier_definitions:z$1.array(z$1.object({name:z$1.string(),handle:z$1.string(),description:z$1.string().optional()})).optional().meta(ye),sort_order:z$1.number().int().default(0).meta(ye),metadata:Tt.meta(ye)}).meta({id:"Entitlement","x-revturbine-schema-persistence":Df,"x-revturbine-schema-exposure":Yr,...iy,...Tn()}),K1=cn("EntitlementAnchor"),va=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...ye,readOnly:true}),handle:st.meta({...ye,readOnly:true}),entitlement_id:z$1.string().min(1).meta(ye),targets:z$1.array(zu).min(1).meta(ye),segment_ids:z$1.array(z$1.string()).default([]).meta(ye),visibility:oy.default("public").meta(ye),period_scope:Mf.optional().meta(ye),instance:z$1.string().max(100).optional().meta(ye),reset_period:cy.optional().meta(ye),limit_value:z$1.union([z$1.number(),z$1.literal("unlimited")]).optional().meta(ye),enforcement:Nf.optional().meta(ye),warning_threshold_percent:ba.optional().meta(ye),overage_price_ref:z$1.string().optional().meta(ye),grace_period_hours:z$1.number().int().min(0).optional().meta(ye),tier_value:z$1.string().optional().meta(ye),rate_value:z$1.number().optional().meta(ye),initial_grant:z$1.number().optional().meta(ye),allowance_value:z$1.union([z$1.number(),z$1.literal("unlimited")]).optional().meta(ye),rollover_enabled:z$1.boolean().optional().meta(ye),max_balance:z$1.union([z$1.number(),z$1.literal("unlimited")]).nullable().default(null).meta(ye),seat_type_id:z$1.string().optional().meta(ye),included_count:z$1.union([z$1.number().int(),z$1.literal("unlimited")]).optional().meta(ye),at_limit_behavior:z$1.enum(["hard_cap","auto_upgrade_at_renewal"]).optional().meta(ye),stripe_metered_price_id:z$1.string().optional().meta(ye),enabled:z$1.boolean().optional().meta(ye),allocation:yl.optional().meta(ye),max_seats:z$1.union([z$1.number(),z$1.literal("unlimited")]).nullable().optional().meta(ye),amount_cents:z$1.number().int().optional().meta(ye),currency:z$1.string().optional().meta(ye)}).meta({id:"EntitlementRule","x-revturbine-schema-persistence":Df,"x-revturbine-schema-exposure":ry,...iy,...rr()}),G1=cn("EntitlementRuleAnchor");va.superRefine((n,e)=>{n.reset_period==="billing_period"&&n.targets.findIndex(s=>s.kind!=="plan_variation"&&s.kind!=="addon_variation")!==-1&&e.addIssue({code:"custom",path:["reset_period"],params:{code:"billing_period_target_mismatch"},message:"reset_period='billing_period' requires all targets to be plan_variation or addon_variation"});let t=n.allowance_value;(t==="unlimited"||typeof t=="number"&&t>0)&&n.reset_period==null&&e.addIssue({code:"custom",path:["reset_period"],params:{code:"allowance_requires_reset_period"},message:"a non-zero credits allowance_value requires a reset_period (the per-period refill cadence)"});});var Z1=z$1.enum(["one_time_period_mismatch"]).meta({id:"EntitlementRuleWarningCode","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr}),Y1=z$1.object({code:Z1.meta(ye),message:z$1.string().min(1).meta(ye),path:z$1.array(z$1.union([z$1.string(),z$1.number().int()])).optional().meta(ye)}).meta({id:"EntitlementRuleWarning","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr}),qf=va.extend({warnings:z$1.array(Y1).optional().meta(ye)}).meta({id:"EntitlementRuleWriteResponse","x-revturbine-schema-persistence":oi,"x-revturbine-schema-exposure":Yr});var Hu=z.merge($).merge(ne).merge(gt).merge(Ct).extend({handle:st.meta({...ye,readOnly:true}),rule_id:z$1.string().min(1).meta(ye),experiment_id:z$1.string().min(1).meta(ye),variant_name:z$1.string().min(1).max(200).meta(ye),is_control:z$1.boolean().default(false).meta(ye),override_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(ye)}).meta({id:"EntitlementRuleVariant","x-revturbine-schema-persistence":Df,"x-revturbine-schema-exposure":ry,...H1,...rr()}),W1=qn($a),X1=qn(va);({"/api/entitlement-anchors":{get:b({operationId:"listEntitlementAnchors",requestParams:{query:q},summary:"List entitlement anchors (identity registry)",tags:["entitlements"],responses:{200:{description:"Entitlement anchor list",content:{"application/json":{schema:B(K1)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"entitlement-anchors",persistence:{table:"entitlements",mode:"list"}}})},"/api/entitlement-rule-anchors":{get:b({operationId:"listEntitlementRuleAnchors",requestParams:{query:q},summary:"List entitlement rule anchors (identity registry)",tags:["entitlements"],responses:{200:{description:"Entitlement rule anchor list",content:{"application/json":{schema:B(G1)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"entitlement-rule-anchors",persistence:{table:"entitlementRules",mode:"list"}}})},"/api/entitlements":{get:b({operationId:"listEntitlements",requestParams:{query:q},summary:"List entitlements",tags:["entitlements"],responses:{200:{description:"Entitlement list",content:{"application/json":{schema:B($a)}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"list"}}}),post:b({operationId:"createEntitlement",summary:"Create entitlement",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:Kn($a)}}},responses:{201:{description:"Created",content:{"application/json":{schema:$a}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"create"}}})},"/api/entitlements/{entitlementId}":{get:b({operationId:"getEntitlement",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Get entitlement",tags:["entitlements"],responses:{200:{description:"Entitlement detail",content:{"application/json":{schema:$a}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"get"}}}),patch:b({operationId:"updateEntitlement",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Update entitlement",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:W1}}},responses:{200:{description:"Updated",content:{"application/json":{schema:$a}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"update"}}}),delete:b({operationId:"deleteEntitlement",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Delete entitlement",tags:["entitlements"],responses:{204:{description:"Deleted"},default:{description:"Error",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlements",persistence:{table:"entitlementVersions",mode:"delete"}}})},"/api/entitlements/{entitlementId}/rules":{get:b({operationId:"listEntitlementRules",requestParams:{path:z$1.object({entitlementId:z$1.string()}),query:q},summary:"List rules for entitlement",tags:["entitlements"],responses:{200:{description:"Rule list",content:{"application/json":{schema:B(va)}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"list"}}}),post:b({operationId:"createEntitlementRule",requestParams:{path:z$1.object({entitlementId:z$1.string()})},summary:"Create entitlement rule",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:Kn(va)}}},responses:{201:{description:"Created",content:{"application/json":{schema:qf}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"create"}}})},"/api/entitlement-rules/{ruleId}":{patch:b({operationId:"updateEntitlementRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Update entitlement rule",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:X1}}},responses:{200:{description:"Updated",content:{"application/json":{schema:qf}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"update"}}}),delete:b({operationId:"deleteEntitlementRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Delete entitlement rule",tags:["entitlements"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"delete"}}})},"/api/entitlement-rules/{ruleId}/duplicate":{post:b({operationId:"duplicateEntitlementRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Duplicate entitlement rule",tags:["entitlements"],responses:{201:{description:"Duplicated",content:{"application/json":{schema:qf}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rules",persistence:{table:"entitlementRuleVersions",mode:"duplicate"}}})},"/api/entitlement-rules/{ruleId}/variants":{get:b({operationId:"listEntitlementRuleVariants",requestParams:{path:z$1.object({ruleId:z$1.string()}),query:q},summary:"List A/B variants for rule",tags:["entitlements"],responses:{200:{description:"Variant list",content:{"application/json":{schema:B(Hu)}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rule-variants",persistence:{table:"entitlementRuleVariants",mode:"list"}}}),post:b({operationId:"createEntitlementRuleVariant",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Create rule A/B variant",tags:["entitlements"],requestBody:{required:true,content:{"application/json":{schema:Kn(Hu)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Hu}}}},"x-revturbine-operation":{exposure:"external",resource:"entitlement-rule-variants",persistence:{table:"entitlementRuleVariants",mode:"create"}}})}});var{Unrestricted:Ce}=Me,{Persisted:nd,Transient:ya}=et,{External:wi,Internal:Q1}=Ze,uy=ut(Ne.Playbook,{sdkInput:true}),ej=ut(Ne.Playbook,{inConfig:false,sdkInput:false}),tj=ut(Ne.Playbook,{inConfig:false,sdkInput:true}),nj=ut(Ne.Playbook,{inConfig:false,sdkInput:false,source:Zr.Runtime}),rj=z$1.enum(["none_always_on","overage_vs_upgrade","time_bound","payment_failed","payment_at_risk"]);var Hf=z$1.enum(["fixed","gated_feature","usage_limit","trial","other_conversion","retention"]).meta({id:"PlacementCategory","x-revturbine-schema-persistence":ya,"x-revturbine-schema-exposure":wi}),zf=z$1.enum(["session","day","week","month","lifetime"]).meta({id:"CapPeriod","x-revturbine-schema-persistence":ya,"x-revturbine-schema-exposure":wi}),my=z$1.object({count:z$1.number().int().positive().meta(Ce),period:zf.meta(Ce)}).meta({id:"PlacementCapRule","x-revturbine-schema-persistence":ya,"x-revturbine-schema-exposure":wi});z$1.object({surface_type:z$1.string().min(1).meta(Ce),rules:z$1.array(my).meta(Ce),cooldown_ms:z$1.number().int().nonnegative().optional().meta(Ce)}).meta({id:"SurfaceTypeCapRule","x-revturbine-schema-persistence":nd,"x-revturbine-schema-exposure":wi,...Me.Operational,...tj});var py=z$1.enum(["open_checkout","view_plans","book_demo","contact_sales","complete_onboarding","invite_teammate","refer_friend","verify_work_email","update_payment_method","enable_auto_renewal","manage_subscription","switch_billing_period","extend_trial","open_rt_placement","dismiss","snooze","custom"]).meta({id:"CtaPathType","x-revturbine-schema-persistence":ya,"x-revturbine-schema-exposure":wi}),Ya=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...Ce,readOnly:true}),name:Bt.meta(Ce),handle:st.meta(Ce),description:ai.meta(Ce),category:Hf.meta(Ce),drag_order_in_category:z$1.number().int().default(0).meta(Ce),surface_slot_id:z$1.string().optional().meta(Ce),entitlement_id:z$1.string().optional().meta(Ce),tier_threshold:z$1.string().optional().meta(Ce),threshold_percent:ba.optional().meta(Ce),trial_type:z$1.enum(["free","reverse"]).optional().meta(Ce),trigger_type:z$1.string().optional().meta(Ce),trial_progress_percent:z$1.number().min(0).max(100).optional().meta(Ce),days_before_end:z$1.number().int().min(0).optional().meta(Ce),qualifier:rj.optional().meta(Ce),activation_window_start:z$1.string().datetime().optional().meta(Ce),activation_window_end:z$1.string().datetime().optional().meta(Ce),metadata:Tt.meta(Ce)}).meta({id:"Placement","x-revturbine-schema-persistence":nd,"x-revturbine-schema-exposure":wi,...uy,...Tn()}),sj=cn("PlacementAnchor"),fy=z$1.enum(["threshold_not_emitted"]).meta({id:"PlacementWarningCode","x-revturbine-schema-persistence":ya,"x-revturbine-schema-exposure":wi}),hy=z$1.object({code:fy.meta(Ce),message:z$1.string().min(1).meta(Ce),path:z$1.array(z$1.union([z$1.string(),z$1.number().int()])).optional().meta(Ce)}).meta({id:"PlacementWarning","x-revturbine-schema-persistence":ya,"x-revturbine-schema-exposure":wi}),dy=Ya.extend({warnings:z$1.array(hy).optional().meta(Ce)}).meta({id:"PlacementWriteResponse","x-revturbine-schema-persistence":ya,"x-revturbine-schema-exposure":wi});var gy=z$1.object({label:z$1.string().min(1).max(200).meta(Ce),cta_path_type:py.meta(Ce),config_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Ce)}).meta({id:"CtaObject","x-revturbine-schema-persistence":ya,"x-revturbine-schema-exposure":wi}),xl=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...Ce,readOnly:true}),handle:st.meta({...Ce,readOnly:true}),placement_id:z$1.string().min(1).meta(Ce),drag_order:z$1.number().int().default(0).meta(Ce),target_plan_ids:z$1.array(z$1.string()).default([]).meta(Ce),target_plan_billing_cadences:z$1.array(z$1.string()).default([]).meta(Ce),target_segments:z$1.array(z$1.string()).default([]).meta(Ce),surface_slot_ids:z$1.array(z$1.string()).default([]).meta(Ce),surface_template_id:z$1.string().min(1).meta(Ce),content_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Ce),cta_list:z$1.array(gy).default([]).meta(Ce),max_per_period:z$1.number().int().min(0).nullable().default(null).meta(Ce),max_period_unit:zf.default("session").meta(Ce),cooldown_after_dismiss_days:z$1.number().int().min(0).default(7).meta(Ce),remind_later_minutes:z$1.number().int().min(0).nullable().default(null).meta(Ce),recommendation_strategy:z$1.enum(["next_tier_up","best_value","custom"]).optional().default("next_tier_up").meta(Ce),recommendation_plan_override:z$1.string().optional().meta(Ce)}).meta({id:"PlacementPayload","x-revturbine-schema-persistence":nd,"x-revturbine-schema-exposure":wi,...uy,...rr()}),aj=cn("PlacementPayloadAnchor");z.merge($).merge(ne).merge(gt).merge(Ct).extend({handle:st.meta({...Ce,readOnly:true}),placement_payload_id:z$1.string().min(1).meta(Ce),experiment_id:z$1.string().min(1).meta(Ce),variant_name:z$1.string().min(1).max(200).meta(Ce),is_control:z$1.boolean().default(false).meta(Ce),traffic_allocation_percent:z$1.number().min(0).max(100).meta(Ce),override_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Ce),status:z$1.enum(["active","paused","complete"]).default("active").meta(Ce)}).meta({id:"PlacementVariant","x-revturbine-schema-persistence":nd,"x-revturbine-schema-exposure":Q1,...ej,...rr()});var _y=z.merge($).merge(ne).merge(gt).merge(Ct).extend({surface_slot_handle:z$1.string().min(1).max(200).meta(Ce),surface_type:Jc.meta(Ce),surface_template_ids:z$1.array(z$1.string()).default([]).meta(Ce),surface_slot_category:z$1.enum(["fixed","gated","triggered"]).default("fixed").meta(Ce),first_seen:z$1.string().datetime().meta({...Ce,readOnly:true}),last_seen:z$1.string().datetime().meta({...Ce,readOnly:true}),status:z$1.enum(["active","inactive","new"]).default("new").meta(Ce),placement_count:z$1.number().int().min(0).default(0).meta({...Ce,readOnly:true})}).meta({id:"SurfaceSlot","x-revturbine-schema-persistence":nd,"x-revturbine-schema-exposure":wi,...nj,...Tn("surface_slot_handle")}),lj=qn(Ya),cj=qn(xl);({"/api/placement-anchors":{get:b({operationId:"listPlacementAnchors",requestParams:{query:q},summary:"List placement anchors (identity registry)",tags:["placements"],responses:{200:{description:"Placement anchor list",content:{"application/json":{schema:B(sj)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-anchors",persistence:{table:"placements",mode:"list"}}})},"/api/placements":{get:b({operationId:"listPlacements",requestParams:{query:q},summary:"List placements",tags:["placements"],responses:{200:{description:"Placement list",content:{"application/json":{schema:B(Ya)}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"list"}}}),post:b({operationId:"createPlacement",summary:"Create placement",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:Kn(Ya)}}},responses:{201:{description:"Created",content:{"application/json":{schema:dy}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"create"}}})},"/api/placements/{placementId}":{get:b({operationId:"getPlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Get placement",tags:["placements"],responses:{200:{description:"Placement detail",content:{"application/json":{schema:Ya}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"get"}}}),patch:b({operationId:"updatePlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Update placement",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:lj}}},responses:{200:{description:"Updated",content:{"application/json":{schema:dy}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"update"}}}),delete:b({operationId:"deletePlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Delete placement",tags:["placements"],responses:{204:{description:"Deleted"},default:{description:"Error",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"delete"}}})},"/api/placements/{placementId}/duplicate":{post:b({operationId:"duplicatePlacement",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Duplicate placement",tags:["placements"],responses:{201:{description:"Duplicated",content:{"application/json":{schema:Ya}}}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"duplicate"}}})},"/api/placements/reorder":{post:b({operationId:"reorderPlacements",summary:"Reorder placements within category",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({category:Hf,ids:z$1.array(z$1.string())})}}},responses:{200:{description:"Reordered"}},"x-revturbine-operation":{exposure:"external",resource:"placements",persistence:{table:"placementVersions",mode:"reorder"}}})},"/api/placement-payload-anchors":{get:b({operationId:"listPlacementPayloadAnchors",requestParams:{query:q},summary:"List placement payload anchors (identity registry)",tags:["placements"],responses:{200:{description:"Placement payload anchor list",content:{"application/json":{schema:B(aj)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-payload-anchors",persistence:{table:"placementPayloads",mode:"list"}}})},"/api/placements/{placementId}/payloads":{get:b({operationId:"listPlacementPayloads",requestParams:{path:z$1.object({placementId:z$1.string()}),query:q},summary:"List placement payloads",tags:["placements"],responses:{200:{description:"Payload list",content:{"application/json":{schema:B(xl)}}}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"list"}}}),post:b({operationId:"createPlacementPayload",requestParams:{path:z$1.object({placementId:z$1.string()})},summary:"Create placement payload",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:Kn(xl)}}},responses:{201:{description:"Created",content:{"application/json":{schema:xl}}}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"create"}}})},"/api/placement-payloads/{payloadId}":{patch:b({operationId:"updatePlacementPayload",requestParams:{path:z$1.object({payloadId:z$1.string()})},summary:"Update placement payload",tags:["placements"],requestBody:{required:true,content:{"application/json":{schema:cj}}},responses:{200:{description:"Updated",content:{"application/json":{schema:xl}}}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"update"}}}),delete:b({operationId:"deletePlacementPayload",requestParams:{path:z$1.object({payloadId:z$1.string()})},summary:"Delete placement payload",tags:["placements"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"external",resource:"placement-payloads",persistence:{table:"placementPayloadVersions",mode:"delete"}}})},"/api/surface-slots":{get:b({operationId:"listSurfaceSlots",requestParams:{query:q},summary:"List auto-discovered surface slots",tags:["placements"],responses:{200:{description:"Surface slot list",content:{"application/json":{schema:B(_y)}}}},"x-revturbine-operation":{exposure:"external",resource:"surface-slots",persistence:{table:"surfaceSlots",mode:"list"}}})}});var {Unrestricted:Ir,Pii:Sl}=Me,{Persisted:Gf,Transient:$f}=et,{Internal:Il}=Ze,uj=ut(Ne.CustomerOperations,{sdkInput:false}),by=z$1.object({external_id:z$1.string().min(1).meta(Sl),traits:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Sl),plan_id:z$1.string().optional().meta(Ir)}).meta({id:"Identity","x-revturbine-schema-persistence":Gf,"x-revturbine-schema-exposure":Il}),Ku=z$1.enum(["payment_failed","payment_method_missing"]),Kf=z.merge($).merge(ne).extend({external_id:z$1.string().min(1).meta(Sl),identity:by.meta(Sl),stripe_customer_id:z$1.string().optional().meta(Ir),current_plan_id:z$1.string().optional().meta(Ir),subscription_status:z$1.enum(["active","past_due","canceled","trialing","unpaid","none"]).default("none").meta(Ir),status:z$1.enum(["active","churned","trial","suspended"]).default("active").meta(Ir),billing_health_issues:z$1.array(Ku).default([]).meta(Ir),metadata:Tt.meta(Ir)}).meta({id:"Customer","x-revturbine-schema-persistence":Gf,"x-revturbine-schema-exposure":Il}),vy=z$1.enum(["permanent","for_duration"]).meta({id:"CustomerOverrideDuration","x-revturbine-schema-persistence":$f,"x-revturbine-schema-exposure":Il}),yy=z$1.enum(["grant_plan","grant_addon","grant_entitlement"]).meta({id:"CustomerOverrideType","x-revturbine-schema-persistence":$f,"x-revturbine-schema-exposure":Il}),xy=z$1.enum(["active","expired","revoked"]).meta({id:"CustomerOverrideStatus","x-revturbine-schema-persistence":$f,"x-revturbine-schema-exposure":Il}),Ms=z.merge($).merge(ne).merge(gt).merge(Ct).extend({handle:st.meta({...Ir,readOnly:true}),customer_id:z$1.string().min(1).meta(Sl),customer_id_list:z$1.array(z$1.string()).optional().meta(Sl),override_type:yy.meta(Ir),target_id:z$1.string().min(1).meta(Ir),value:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Ir),duration_type:vy.default("permanent").meta(Ir),duration_value:z$1.string().optional().meta(Ir),expiry_date:qt.meta(Ir),status:xy.default("active").meta(Ir),reason:z$1.string().max(500).optional().meta(Ir),created_by:z$1.string().optional().meta(Ir)}).meta({id:"CustomerOverride","x-revturbine-schema-persistence":Gf,"x-revturbine-schema-exposure":Il,...uj,...rr()});({"/api/customers":{get:b({operationId:"listCustomers",requestParams:{query:q},summary:"List customers",tags:["customers"],responses:{200:{description:"Customer list",content:{"application/json":{schema:B(Kf)}}}},"x-revturbine-operation":{exposure:"internal",resource:"customers",persistence:{table:"customers",mode:"list"}}})},"/api/customers/{customerId}":{get:b({operationId:"getCustomer",requestParams:{path:z$1.object({customerId:z$1.string()})},summary:"Get customer by ID",tags:["customers"],responses:{200:{description:"Customer",content:{"application/json":{schema:Kf}}}},"x-revturbine-operation":{exposure:"internal",resource:"customers",persistence:{table:"customers",mode:"get"}}})},"/api/customer-overrides":{get:b({operationId:"listCustomerOverrides",requestParams:{query:q},summary:"List customer overrides",tags:["customers"],responses:{200:{description:"Override list",content:{"application/json":{schema:B(Ms)}}}},"x-revturbine-operation":{exposure:"internal",resource:"customer-overrides",persistence:{table:"customerOverrides",mode:"list"}}})},"/api/customer-overrides/{overrideId}":{get:b({operationId:"getCustomerOverride",requestParams:{path:z$1.object({overrideId:z$1.string()})},summary:"Get customer override",tags:["customers"],responses:{200:{description:"Override",content:{"application/json":{schema:Ms}}}},"x-revturbine-operation":{exposure:"internal",resource:"customer-overrides",persistence:{table:"customerOverrides",mode:"get"}}}),patch:b({operationId:"updateCustomerOverride",requestParams:{path:z$1.object({overrideId:z$1.string()})},summary:"Update customer override",tags:["customers"],requestBody:{required:true,content:{"application/json":{schema:Ms.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Ms}}}},"x-revturbine-operation":{exposure:"internal",resource:"customer-overrides",persistence:{table:"customerOverrides",mode:"update"}}}),delete:b({operationId:"deleteCustomerOverride",requestParams:{path:z$1.object({overrideId:z$1.string()})},summary:"Delete customer override",tags:["customers"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"customer-overrides",persistence:{table:"customerOverrides",mode:"delete"}}})},"/api/customer-overrides/{overrideId}/revoke":{post:b({operationId:"revokeCustomerOverride",requestParams:{path:z$1.object({overrideId:z$1.string()})},summary:"Revoke an active customer override",tags:["customers"],responses:{200:{description:"Revoked",content:{"application/json":{schema:Ms}}}},"x-revturbine-operation":{exposure:"internal",resource:"customer-overrides",persistence:{table:"customerOverrides",mode:"update"}}})},"/api/customer-overrides/{overrideId}/duplicate":{post:b({operationId:"duplicateCustomerOverride",requestParams:{path:z$1.object({overrideId:z$1.string()})},summary:"Duplicate customer override for another customer",tags:["customers"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({customer_id:z$1.string()})}}},responses:{201:{description:"Duplicated",content:{"application/json":{schema:Ms}}}},"x-revturbine-operation":{exposure:"internal",resource:"customer-overrides",persistence:{table:"customerOverrides",mode:"create"}}})}});var {Unrestricted:Fe,Pii:rd,Financial:Zf}=Me,{Persisted:Sy,Transient:vs}=et,{External:Pl,Internal:id}=Ze,sd=z$1.object({in_trial:z$1.boolean().meta(Fe),trial_type:z$1.string().optional().meta(Fe),plan_handle:z$1.string().optional().meta(Fe),state:z$1.enum(["active","running_out","expired","converted","none"]).optional().meta(Fe),trial_limit_type:z$1.enum(["time","usage"]).optional().meta(Fe),progress_percent:z$1.number().min(0).max(100).optional().meta(Fe),day_number:z$1.number().int().min(0).optional().meta(Fe),days_remaining:z$1.number().int().min(0).optional().meta(Fe),usage_entitlement_handle:z$1.string().optional().meta(Fe),usage_consumed:z$1.number().int().min(0).optional().meta(Fe),usage_remaining:z$1.number().int().min(0).optional().meta(Fe),usage_limit:z$1.number().int().min(0).optional().meta(Fe)}).meta({id:"UserTrialStatus","x-revturbine-schema-persistence":vs,"x-revturbine-schema-exposure":Pl}),Yf=z$1.object({entitlement_handle:z$1.string().min(1).meta(Fe),unit:z$1.string().min(1).meta(Fe),amount:z$1.number().min(0).meta(Fe),limit:z$1.number().min(0).optional().meta(Fe),reset_date:z$1.string().optional().meta(Fe)}).meta({id:"UserUsageEntry","x-revturbine-schema-persistence":vs,"x-revturbine-schema-exposure":Pl});z$1.enum(["new","high","medium","low","inactive"]).meta({id:"ActivityLevel","x-revturbine-schema-persistence":vs,"x-revturbine-schema-exposure":Pl});var Wf=z$1.object({id:z$1.string().min(1).meta(Fe),name:z$1.string().min(1).meta(Fe),price:z$1.string().optional().meta(Fe),billing_period:z$1.enum(["monthly","annual","none"]).optional().meta(Fe)}).meta({id:"UserPlanContext","x-revturbine-schema-persistence":vs,"x-revturbine-schema-exposure":Pl}),Iy=z$1.object({product_instance_id:z$1.string().min(1).meta(Fe),user_id:z$1.string().min(1).meta(rd),plan:Wf.optional().meta(Fe),usage:z$1.record(z$1.string(),Yf).default({}).meta(Fe),trial:sd.optional().meta(Fe),entitlements:z$1.record(z$1.string(),z$1.union([z$1.boolean(),Za])).default({}).meta(Fe)}).meta({id:"UserInstanceContext","x-revturbine-schema-persistence":Sy,"x-revturbine-schema-exposure":Pl}),Wa=z.merge(ne).merge($).extend({user_id:z$1.string().min(1).meta(rd),account_id:z$1.string().min(1).nullable().optional().meta(rd),email:z$1.string().email().nullable().optional().meta(rd),email_type:z$1.string().optional().meta(Fe),plan:Wf.optional().meta(Fe),usage:z$1.record(z$1.string(),Yf).default({}).meta(Fe),trial:sd.optional().meta(Fe),payment_failed:z$1.boolean().optional().meta(Fe),payment_at_risk:z$1.boolean().optional().meta(Fe),tiers:z$1.record(z$1.string(),z$1.string()).optional().meta(Fe),entitlements:z$1.record(z$1.string(),z$1.union([z$1.boolean(),Za])).default({}).meta(Fe),instances:z$1.array(Iy).optional().meta(Fe),custom:z$1.record(z$1.string(),z$1.union([z$1.string(),z$1.number(),z$1.boolean(),z$1.null()])).default({}).meta(rd),personalization:z$1.record(z$1.string(),z$1.union([z$1.string(),z$1.number()])).default({}).meta({...Fe,"x-revturbine-schema-persistence":vs}),derived_config_version:z$1.string().nullable().optional().meta(Fe),context_hash:z$1.string().nullable().optional().meta(Fe),derived_computed_at:qt.meta(Fe),activity_score:z$1.number().int().min(0).nullable().optional().meta(Fe),activity_score_computed_at:z$1.string().datetime().nullable().optional().meta(Fe),experiments:z$1.record(z$1.string(),z$1.string()).optional().meta(Fe)}).meta({id:"UserContext","x-revturbine-schema-persistence":Sy,"x-revturbine-schema-exposure":Pl}),fj=z$1.object({status:z$1.enum(["active","running_out","expired","converted","none"]).meta({...Fe,...Ar}),days_remaining:z$1.number().int().min(0).optional().meta({...Fe,...Ar}),ends_at:z$1.string().optional().meta({...Fe,...Ar})}).meta({id:"ClientContextTrial","x-revturbine-schema-persistence":vs,"x-revturbine-schema-exposure":id}),hj=z$1.object({health:z$1.enum(["ok","attention_required"]).optional().meta({...Fe,...Ar}),failed_payment_reason:z$1.string().optional().meta({...Zf,...Du}),issues:z$1.array(Ku).optional().meta({...Zf,...Du}),provider_subscription_id:z$1.string().optional().meta({...Zf,...jf})}).meta({id:"ClientContextBilling","x-revturbine-schema-persistence":vs,"x-revturbine-schema-exposure":id}),gj=z$1.object({can_upgrade:z$1.boolean().optional().meta({...Fe,...Ar}),can_manage_billing:z$1.boolean().optional().meta({...Fe,...Ar})}).meta({id:"ClientContextCapabilities","x-revturbine-schema-persistence":vs,"x-revturbine-schema-exposure":id}),_j=z$1.object({handle:z$1.string().min(1).optional().meta({...Fe,...Ar}),name:z$1.string().min(1).optional().meta({...Fe,...Ar})}).meta({id:"ClientContextPlan","x-revturbine-schema-persistence":vs,"x-revturbine-schema-exposure":id});z$1.object({subject:z$1.string().min(1).meta({...Fe,...Ar}),context_version:z$1.string().optional().meta({...Fe,...Ar}),trial:fj.optional().meta({...Fe,...Ar}),billing:hj.optional().meta({...Fe,...Ar}),plan:_j.optional().meta({...Fe,...Ar}),capabilities:gj.optional().meta({...Fe,...Ar})}).meta({id:"ClientContext","x-revturbine-schema-persistence":vs,"x-revturbine-schema-exposure":id});({"/api/user-contexts":{get:b({operationId:"listUserContexts",requestParams:{query:q},summary:"List user contexts",tags:["users"],responses:{200:{description:"User context list",content:{"application/json":{schema:B(Wa)}}}},"x-revturbine-operation":{exposure:"internal",resource:"user-contexts",persistence:{table:"userContexts",mode:"list"}}})},"/api/user-contexts/{userContextId}":{get:b({operationId:"getUserContext",requestParams:{path:z$1.object({userContextId:z$1.string()})},summary:"Get user context",tags:["users"],responses:{200:{description:"User context",content:{"application/json":{schema:Wa}}}},"x-revturbine-operation":{exposure:"internal",resource:"user-contexts",persistence:{table:"userContexts",mode:"get"}}}),patch:b({operationId:"updateUserContext",requestParams:{path:z$1.object({userContextId:z$1.string()})},summary:"Update a user context",tags:["users"],requestBody:{required:true,content:{"application/json":{schema:Wa.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Wa}}}},"x-revturbine-operation":{exposure:"internal",resource:"user-contexts",persistence:{table:"userContexts",mode:"update"}}}),delete:b({operationId:"deleteUserContext",requestParams:{path:z$1.object({userContextId:z$1.string()})},summary:"Delete a user context",tags:["users"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"user-contexts",persistence:{table:"userContexts",mode:"delete"}}})}});var {Unrestricted:Gn}=Me,{Persisted:Xf,Transient:Py}=et,{Internal:ad}=Ze,yj=ut(Ne.Playbook,{sdkInput:true}),Ty=ut(Ne.Playbook,{inConfig:false,sdkInput:true}),Cy=z$1.enum(["default","custom"]).meta({id:"DimensionCategory","x-revturbine-schema-persistence":Py,"x-revturbine-schema-exposure":ad}),ky=z$1.enum(["system","sdk_trait","sdk_trait_enum","cdp_property","manual_list"]).meta({id:"DimensionSourceType","x-revturbine-schema-persistence":Py,"x-revturbine-schema-exposure":ad}),Gu=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...Gn,readOnly:true}),name:Bt.meta(Gn),handle:st.optional().meta(Gn),category:Cy.default("custom").meta(Gn),visibility_toggle:z$1.boolean().default(true).meta(Gn),source_type:ky.default("system").meta(Gn),estimated_size:z$1.number().int().min(0).optional().meta(Gn)}).meta({id:"SegmentDimension","x-revturbine-schema-persistence":Xf,"x-revturbine-schema-exposure":ad,...Ty,...Tn()}),xj=cn("SegmentDimensionAnchor"),$u=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...Gn,readOnly:true}),dimension_id:z$1.string().min(1).meta(Gn),name:Bt.meta(Gn),handle:st.meta(Gn),description:ai.meta(Gn),definition_rule:z$1.record(z$1.string(),z$1.unknown()).optional().meta(Gn),used_in_count:z$1.number().int().min(0).default(0).meta({...Gn,readOnly:true})}).meta({id:"SegmentValue","x-revturbine-schema-persistence":Xf,"x-revturbine-schema-exposure":ad,...Ty,...Tn()}),Sj=cn("SegmentValueAnchor");z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...Gn,readOnly:true}),name:Bt.meta(Gn),handle:st.meta(Gn),description:ai.meta(Gn),rules:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Gn),experiment_id:z$1.string().min(1).optional().meta(Gn),is_active:z$1.boolean().default(true).meta(Gn),estimated_size:z$1.number().int().min(0).nullable().default(null).meta(Gn),metadata:Tt.meta(Gn)}).meta({id:"Segment","x-revturbine-schema-persistence":Xf,"x-revturbine-schema-exposure":ad,...yj,...Tn()});({"/api/segment-dimension-anchors":{get:b({operationId:"listSegmentDimensionAnchors",requestParams:{query:q},summary:"List segment dimension anchors (identity registry)",tags:["segments"],responses:{200:{description:"Segment dimension anchor list",content:{"application/json":{schema:B(xj)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"segment-dimension-anchors",persistence:{table:"segmentDimensions",mode:"list"}}})},"/api/segment-value-anchors":{get:b({operationId:"listSegmentValueAnchors",requestParams:{query:q},summary:"List segment value anchors (identity registry)",tags:["segments"],responses:{200:{description:"Segment value anchor list",content:{"application/json":{schema:B(Sj)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"segment-value-anchors",persistence:{table:"segmentValues",mode:"list"}}})},"/api/segments":{get:b({operationId:"listSegmentDimensions",requestParams:{query:q},summary:"List segment dimensions",tags:["segments"],responses:{200:{description:"Dimension list",content:{"application/json":{schema:B(Gu)}}}},"x-revturbine-operation":{exposure:"internal",resource:"segments",persistence:{table:"segmentDimensionVersions",mode:"list"}}})},"/api/segments/custom":{post:b({operationId:"createCustomDimension",summary:"Create custom segment dimension",tags:["segments"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({name:z$1.string(),description:z$1.string().optional()})}}},responses:{201:{description:"Created",content:{"application/json":{schema:Gu}}}},"x-revturbine-operation":{exposure:"internal",resource:"segments",persistence:{table:"segmentDimensionVersions",mode:"create"}}})},"/api/segments/{dimensionId}":{delete:b({operationId:"deleteCustomDimension",requestParams:{path:z$1.object({dimensionId:z$1.string()})},summary:"Delete custom dimension",tags:["segments"],responses:{204:{description:"Deleted"},default:{description:"Error",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"segments",persistence:{table:"segmentDimensionVersions",mode:"delete"}}})},"/api/segments/{dimensionId}/visibility":{patch:b({operationId:"toggleDimensionVisibility",requestParams:{path:z$1.object({dimensionId:z$1.string()})},summary:"Toggle dimension visibility",tags:["segments"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({visible:z$1.boolean()})}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Gu}}}},"x-revturbine-operation":{exposure:"internal",resource:"segments",persistence:{table:"segmentDimensionVersions",mode:"update"}}})},"/api/segments/{dimensionId}/values":{get:b({operationId:"listSegmentValues",requestParams:{path:z$1.object({dimensionId:z$1.string()}),query:q},summary:"List segment values for dimension",tags:["segments"],responses:{200:{description:"Value list",content:{"application/json":{schema:B($u)}}}},"x-revturbine-operation":{exposure:"internal",resource:"segment-values",persistence:{table:"segmentValueVersions",mode:"list"}}}),post:b({operationId:"createSegmentValue",requestParams:{path:z$1.object({dimensionId:z$1.string()})},summary:"Create segment value",tags:["segments"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({name:z$1.string(),handle:z$1.string(),definition_rule:z$1.record(z$1.string(),z$1.unknown()).optional()})}}},responses:{201:{description:"Created",content:{"application/json":{schema:$u}}}},"x-revturbine-operation":{exposure:"internal",resource:"segment-values",persistence:{table:"segmentValueVersions",mode:"create"}}})},"/api/segment-values/{valueId}":{patch:b({operationId:"updateSegmentValue",requestParams:{path:z$1.object({valueId:z$1.string()})},summary:"Update segment value",tags:["segments"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({name:z$1.string().optional(),definition_rule:z$1.record(z$1.string(),z$1.unknown()).optional()})}}},responses:{200:{description:"Updated",content:{"application/json":{schema:$u}}}},"x-revturbine-operation":{exposure:"internal",resource:"segment-values",persistence:{table:"segmentValueVersions",mode:"update"}}}),delete:b({operationId:"deleteSegmentValue",requestParams:{path:z$1.object({valueId:z$1.string()})},summary:"Delete segment value",tags:["segments"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"segment-values",persistence:{table:"segmentValueVersions",mode:"delete"}}})}});var {Unrestricted:ct}=Me,{Persisted:Tl,Transient:Ry}=et,{External:xa}=Ze,Jf=ut(Ne.Playbook,{sdkInput:true}),Tj=ut(Ne.Playbook,{inConfig:false,sdkInput:false}),Cj=ut(Ne.Playbook,{inConfig:false,sdkInput:true}),kj=ut(Ne.Playbook,{inConfig:false,sdkInput:true,source:Zr.CodeConstant});z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...ct,readOnly:true}),handle:st.meta({...ct,readOnly:true}),name:Bt.meta(ct),channel:z$1.enum(["in_app","email","push","sms","webhook"]).meta(ct),subject:z$1.string().max(500).optional().meta(ct),body:z$1.string().meta(ct),template_variables:z$1.array(z$1.string()).default([]).meta(ct),metadata:Tt.meta(ct)}).meta({id:"Message","x-revturbine-schema-persistence":Tl,"x-revturbine-schema-exposure":xa,...Tj,...rr()});var Zu=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...ct,readOnly:true}),name:Bt.meta(ct),handle:st.meta(ct),action_type:bl.meta(ct),target_url:z$1.string().optional().meta(ct),target_plan_id:z$1.string().optional().meta(ct),config_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(ct),metadata:Tt.meta(ct)}).meta({id:"CtaPath","x-revturbine-schema-persistence":Tl,"x-revturbine-schema-exposure":xa,...Jf,...Tn()}),Ej=cn("CtaPathAnchor"),Ey=z$1.enum(["header","body","secondary_body","message","cta_label","secondary_label","image","toggle","duration","send_delay","entitlement","plan","dropdown","json"]).meta({id:"TemplateFieldType","x-revturbine-schema-persistence":Tl,"x-revturbine-schema-exposure":xa,...kj}),wy=z$1.object({name:z$1.string().min(1),field_type:Ey,required:z$1.boolean().default(false),default_value:z$1.unknown().optional(),order:z$1.number().int().min(0).optional(),help_text:z$1.string().max(500).optional()}).meta({id:"FieldDefinition","x-revturbine-schema-persistence":Tl,"x-revturbine-schema-exposure":xa,...Cj}),Yu=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...ct,readOnly:true}),name:Bt.meta(ct),handle:st.meta(ct),surface_type:Vf.meta(ct),field_definitions:z$1.array(wy).default([]).meta(ct),description:ai.meta(ct)}).meta({id:"SurfaceTemplate","x-revturbine-schema-persistence":Tl,"x-revturbine-schema-exposure":xa,...Jf,...Tn()}),wj=cn("SurfaceTemplateAnchor"),Wu=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...ct,readOnly:true}),name:Bt.meta(ct),handle:st.meta(ct),content_fields:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(ct),variation_dimension_id:z$1.string().optional().meta(ct),variation_values:z$1.array(z$1.object({segment_value_id:z$1.string(),content_fields_override:z$1.record(z$1.string(),z$1.unknown())})).optional().meta(ct),notes:z$1.string().max(1e3).optional().meta(ct),used_in_count:z$1.number().int().min(0).default(0).meta({...ct,readOnly:true})}).meta({id:"MessageBlockRecord","x-revturbine-schema-persistence":Tl,"x-revturbine-schema-exposure":xa,...Jf,...Tn()}),Oj=cn("MessageBlockRecordAnchor"),Oy=z$1.object({segment_id:z$1.string().min(1).meta(ct),message_block_id:z$1.string().min(1).meta(ct),ui_path_id:z$1.string().optional().meta(ct),promotion_id:z$1.string().optional().meta(ct)}).meta({id:"ContentPayloadSegmentEntry","x-revturbine-schema-persistence":Ry,"x-revturbine-schema-exposure":xa});z$1.object({payload_id:z$1.string().min(1).meta(ct),tenant_id:z$1.string().min(1).meta(ct),name:Bt.meta(ct),surface_template_id:z$1.string().min(1).meta(ct),default_message_block_id:z$1.string().min(1).meta(ct),segment_content_map:z$1.array(Oy).optional().meta(ct),ui_path_id:z$1.string().optional().meta(ct),promotion_id:z$1.string().optional().meta(ct),status:z$1.enum(["draft","active","inactive"]).meta(ct),created_at:z$1.string().datetime().optional().meta({...ct,readOnly:true}),updated_at:z$1.string().datetime().optional().meta({...ct,readOnly:true})}).meta({id:"ContentPlacementPayload","x-revturbine-schema-persistence":Ry,"x-revturbine-schema-exposure":xa});({"/api/surface-template-anchors":{get:b({operationId:"listSurfaceTemplateAnchors",requestParams:{query:q},summary:"List surface template anchors (identity registry)",tags:["content"],responses:{200:{description:"Surface template anchor list",content:{"application/json":{schema:B(wj)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"surface-template-anchors",persistence:{table:"surfaceTemplates",mode:"list"}}})},"/api/surface-templates":{get:b({operationId:"listSurfaceTemplates",requestParams:{query:q},summary:"List surface templates",tags:["content"],responses:{200:{description:"Template list",content:{"application/json":{schema:B(Yu)}}}},"x-revturbine-operation":{exposure:"external",resource:"surface-templates",persistence:{table:"surfaceTemplateVersions",mode:"list"}}})},"/api/message-block-record-anchors":{get:b({operationId:"listMessageBlockRecordAnchors",requestParams:{query:q},summary:"List message block anchors (identity registry)",tags:["content"],responses:{200:{description:"Message block anchor list",content:{"application/json":{schema:B(Oj)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"message-block-record-anchors",persistence:{table:"messageBlocks",mode:"list"}}})},"/api/messages":{get:b({operationId:"listMessageBlocks",requestParams:{query:q},summary:"List message blocks",tags:["content"],responses:{200:{description:"Message block list",content:{"application/json":{schema:B(Wu)}}}},"x-revturbine-operation":{exposure:"external",resource:"message-blocks",persistence:{table:"messageBlockVersions",mode:"list"}}})},"/api/cta-path-anchors":{get:b({operationId:"listCtaPathAnchors",requestParams:{query:q},summary:"List CTA path anchors (identity registry)",tags:["content"],responses:{200:{description:"CTA path anchor list",content:{"application/json":{schema:B(Ej)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"cta-path-anchors",persistence:{table:"ctaPaths",mode:"list"}}})},"/api/cta-paths":{get:b({operationId:"listCtaPaths",requestParams:{query:q},summary:"List CTA paths",tags:["content"],responses:{200:{description:"CTA path list",content:{"application/json":{schema:B(Zu)}}}},"x-revturbine-operation":{exposure:"external",resource:"cta-paths",persistence:{table:"ctaPathVersions",mode:"list"}}})}});var {Unrestricted:Cl,Pii:Fj}=Me,{Persisted:Ay}=et,{Internal:Lj,External:Vj}=Ze,Uj=ut(Ne.Branding,{sdkInput:false});z$1.object({id:z$1.string().min(1).meta({...Cl,readOnly:true}),name:z$1.string().min(1).max(120).meta(Cl),mode:z$1.enum(["light","dark","system"]).default("system").meta(Cl),tokens:z$1.record(z$1.string(),z$1.string()).default({}).meta(Cl)}).meta({id:"Theme","x-revturbine-schema-persistence":Ay,"x-revturbine-schema-exposure":Vj,...Uj});var Qf=z.merge($).extend({user_id:z$1.string().min(1).meta(Fj),scope:z$1.string().min(1).meta(Cl),preferences:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(Cl)}).meta({id:"UiPreference","x-revturbine-schema-persistence":Ay,"x-revturbine-schema-exposure":Lj});({"/api/ui-preferences":{get:b({operationId:"listUiPreferences",requestParams:{query:q},summary:"List UI preferences",tags:["ui"],responses:{200:{description:"UI preferences list response",content:{"application/json":{schema:B(Qf)}}}},"x-revturbine-operation":{exposure:"internal",resource:"ui-preferences",persistence:{table:"uiPreferences",mode:"list"}}}),put:b({operationId:"upsertUiPreferences",summary:"Upsert UI preferences",tags:["ui"],requestBody:{required:true,content:{"application/json":{schema:z$1.array(qn(Qf))}}},responses:{200:{description:"UI preferences upsert response",content:{"application/json":{schema:z$1.object({updated:z$1.number().int().min(0)})}}}},"x-revturbine-operation":{exposure:"internal",resource:"ui-preferences",persistence:{table:"uiPreferences",mode:"upsert",writeSchema:"UiPreferenceSchema#writable"}}})}});var {Unrestricted:_t,Financial:ys}=Me,{Persisted:jy,Transient:od}=et,{External:ld,Internal:Fy}=Ze,Ly=z$1.object({month:z$1.string().meta(_t),cohort_size:z$1.number().int().min(0).meta(_t),retained:z$1.number().int().min(0).meta(_t),retention_rate:z$1.number().min(0).max(1).meta(_t),revenue_cents:z$1.number().int().min(0).meta(ys)}).meta({id:"CohortMonth","x-revturbine-schema-persistence":od,"x-revturbine-schema-exposure":ld}),Vy=z$1.object({step:z$1.string().meta(_t),label:z$1.string().meta(_t),count:z$1.number().int().min(0).meta(_t),conversion_rate:z$1.number().min(0).max(1).meta(_t),drop_off_rate:z$1.number().min(0).max(1).meta(_t)}).meta({id:"FunnelStep","x-revturbine-schema-persistence":od,"x-revturbine-schema-exposure":ld}),Uy=z$1.object({placement_id:z$1.string().meta(_t),placement_name:z$1.string().meta(_t),impressions:z$1.number().int().min(0).meta(_t),clicks:z$1.number().int().min(0).meta(_t),conversions:z$1.number().int().min(0).meta(_t),ctr:z$1.number().min(0).meta(_t),conversion_rate:z$1.number().min(0).meta(_t),revenue_cents:z$1.number().int().min(0).meta(ys)}).meta({id:"PlacementPerformanceRow","x-revturbine-schema-persistence":od,"x-revturbine-schema-exposure":ld}),By=z$1.object({date:z$1.string().meta(_t),mrr_cents:z$1.number().int().min(0).meta(ys),arr_cents:z$1.number().int().min(0).meta(ys),new_mrr_cents:z$1.number().int().min(0).meta(ys),churned_mrr_cents:z$1.number().int().min(0).meta(ys),expansion_mrr_cents:z$1.number().int().min(0).meta(ys),net_new_mrr_cents:z$1.number().int().meta(ys)}).meta({id:"RevenueMetric","x-revturbine-schema-persistence":od,"x-revturbine-schema-exposure":ld}),qy=z$1.object({metric_key:z$1.string().min(1).meta(_t),label:z$1.string().meta(_t),current_value:z$1.number().meta(ys),previous_value:z$1.number().nullable().default(null).meta(ys),change_percent:z$1.number().nullable().default(null).meta(_t),period:z$1.string().meta(_t),unit:z$1.enum(["count","cents","percent","ratio","seconds"]).default("count").meta(_t)}).meta({id:"KpiAggregate","x-revturbine-schema-persistence":od,"x-revturbine-schema-exposure":ld}),eh=z.merge($).merge(ne).extend({report_type:z$1.enum(["plan_drift","entitlement_drift","usage_anomaly","revenue_anomaly"]).meta(_t),severity:_l.meta(_t),resource_type:z$1.string().min(1).meta(_t),resource_id:z$1.string().min(1).meta(_t),summary:z$1.string().max(1e3).meta(_t),expected_value:z$1.unknown().optional().meta(_t),actual_value:z$1.unknown().optional().meta(_t),affected_customer_count:z$1.number().int().min(0).default(0).meta(_t),is_resolved:z$1.boolean().default(false).meta(_t),resolved_at:qt.meta(_t),metadata:Tt.meta(_t)}).meta({id:"DriftReport","x-revturbine-schema-persistence":jy,"x-revturbine-schema-exposure":Fy}),th=z.merge($).merge(ne).extend({alert_type:z$1.enum(["usage_threshold","revenue_drop","conversion_drop","experiment_significance","drift_detected","custom"]).meta(_t),severity:_l.meta(_t),title:z$1.string().min(1).max(300).meta(_t),description:z$1.string().max(2e3).meta(_t),resource_type:z$1.string().optional().meta(_t),resource_id:z$1.string().optional().meta(_t),is_acknowledged:z$1.boolean().default(false).meta(_t),acknowledged_at:qt.meta(_t),acknowledged_by:z$1.string().nullable().default(null).meta(_t),metadata:Tt.meta(_t)}).meta({id:"Alert","x-revturbine-schema-persistence":jy,"x-revturbine-schema-exposure":Fy});({"/api/analytics/kpis":{get:b({operationId:"listKpiAggregates",requestParams:{query:q},summary:"List KPI aggregate metrics",tags:["analytics"],responses:{200:{description:"KPI list",content:{"application/json":{schema:B(qy)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"kpiAggregates",mode:"list"}}})},"/api/analytics/placement-performance":{get:b({operationId:"listPlacementPerformance",requestParams:{query:q},summary:"List placement performance rows",tags:["analytics"],responses:{200:{description:"Performance rows",content:{"application/json":{schema:B(Uy)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"placementPerformance",mode:"list"}}})},"/api/analytics/revenue":{get:b({operationId:"listRevenueMetrics",requestParams:{query:q},summary:"List revenue metrics over time",tags:["analytics"],responses:{200:{description:"Revenue metrics",content:{"application/json":{schema:B(By)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"revenueMetrics",mode:"list"}}})},"/api/analytics/cohorts":{get:b({operationId:"listCohortMetrics",requestParams:{query:q},summary:"List cohort retention metrics",tags:["analytics"],responses:{200:{description:"Cohort metrics",content:{"application/json":{schema:B(Ly)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"cohortMetrics",mode:"list"}}})},"/api/analytics/funnels":{get:b({operationId:"listFunnelSteps",requestParams:{query:q},summary:"List funnel step metrics",tags:["analytics"],responses:{200:{description:"Funnel steps",content:{"application/json":{schema:B(Vy)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"funnelSteps",mode:"list"}}})},"/api/analytics/drift-reports":{get:b({operationId:"listDriftReports",requestParams:{query:q},summary:"List drift reports",tags:["analytics"],responses:{200:{description:"Drift reports",content:{"application/json":{schema:B(eh)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"driftReports",mode:"list"}}})},"/api/analytics/drift-reports/{reportId}/resolve":{post:b({operationId:"resolveDriftReport",requestParams:{path:z$1.object({reportId:z$1.string()})},summary:"Mark a drift report as resolved",tags:["analytics"],responses:{200:{description:"Resolved",content:{"application/json":{schema:eh}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"driftReports",mode:"update"}}})},"/api/analytics/alerts":{get:b({operationId:"listAlerts",requestParams:{query:q},summary:"List alerts",tags:["analytics"],responses:{200:{description:"Alert list",content:{"application/json":{schema:B(th)}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"alerts",mode:"list"}}})},"/api/analytics/alerts/{alertId}/acknowledge":{post:b({operationId:"acknowledgeAlert",requestParams:{path:z$1.object({alertId:z$1.string()})},summary:"Acknowledge an alert",tags:["analytics"],responses:{200:{description:"Acknowledged",content:{"application/json":{schema:th}}}},"x-revturbine-operation":{exposure:"internal",resource:"analytics",persistence:{table:"alerts",mode:"update"}}})}});var {Unrestricted:O,Pii:kl}=Me,{Persisted:Dy,Transient:Un}=et,{Internal:Sa,External:ur}=Ze,rh=z$1.enum(["clickstream","telemetry","sdk","workflow","system"]).meta({id:"EventSource","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur}),My=z.extend({event_type:z$1.string().min(1).meta(O),source:rh.default("sdk").meta(O),tenant_id:z$1.string().min(1).optional().meta(O),user_id:z$1.string().min(1).optional().meta(kl),session_id:z$1.string().min(1).optional().meta(kl),occurred_at:z$1.string().datetime().meta(O),request_id:z$1.string().min(1).meta(O),attributes:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(O),payload:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(O)}).meta({id:"EventEnvelope","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":Sa}),Ny=My.extend({ingested_at:z$1.string().datetime().meta(O)}).meta({id:"IngestedEvent","x-revturbine-schema-persistence":Dy,"x-revturbine-schema-exposure":Sa});z$1.array(z$1.object({id:z$1.string().min(1).optional().meta(O),event_type:z$1.string().min(1).meta(O),occurred_at:z$1.string().datetime().optional().meta(O),tenant_id:z$1.string().min(1).optional().meta(O),user_id:z$1.string().min(1).optional().meta(kl),session_id:z$1.string().min(1).optional().meta(kl),attributes:z$1.record(z$1.string(),z$1.unknown()).optional().meta(O),payload:z$1.record(z$1.string(),z$1.unknown()).optional().meta(O),message:z$1.string().optional().meta(O),level:z$1.string().optional().meta(O),path:z$1.string().optional().meta(O)})).meta({id:"EventIngestBatch","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":Sa});var Hy=z$1.enum(["impression","dismiss","remind_me_later","cta_clicked","cta_completed","suppress"]).meta({id:"TreatmentInteractionType","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});z$1.object({user_id:z$1.string().min(1).meta(kl),placement_id:z$1.string().min(1).meta(O),treatment_id:z$1.string().min(1).optional().meta(O),surface_slot_id:z$1.string().min(1).optional().meta(O),surface_template_id:z$1.string().min(1).optional().meta(O),payload_id:z$1.string().min(1).optional().meta(O),interaction_type:Hy.meta(O),interaction_at:z$1.string().datetime().optional().meta(O),message_block_handle:z$1.string().min(1).optional().meta(O),message_block_id:z$1.string().min(1).optional().meta(O),experiment_id:z$1.string().min(1).optional().meta(O),variant_key:z$1.string().min(1).optional().meta(O),test:z$1.boolean().optional().meta(O),metadata:z$1.record(z$1.string(),z$1.unknown()).optional().meta(O)}).meta({id:"TreatmentInteractionInput","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});z$1.enum(["trial_midpoint","trial_expiring","trial_expired","usage_limit_approaching","usage_limit_reached","credit_balance_low","seat_limit_reached","feature_gated","cancel_intent","payment_failed","auto_renewal_reminder","onboarding_complete","invite_teammate_prompt","referral_offer","plan_upgrade_nudge"]).meta({id:"TriggerEventType","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});z$1.object({days_remaining:z$1.number().int().min(0).optional().meta(O)}).meta({id:"TrialTriggerPayload","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});z$1.object({entitlement_handle:z$1.string().optional().meta(O),current_usage:z$1.number().min(0).optional().meta(O),usage_limit:z$1.number().min(0).optional().meta(O),usage_percent:z$1.number().min(0).max(100).optional().meta(O),threshold:z$1.number().min(0).optional().meta(O),balance:z$1.number().min(0).optional().meta(O),allocation:z$1.number().min(0).optional().meta(O),seats_used:z$1.number().int().min(0).optional().meta(O),seats_allowed:z$1.number().int().min(0).optional().meta(O)}).meta({id:"UsageTriggerPayload","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});z$1.object({feature:z$1.string().min(1).meta(O)}).meta({id:"FeatureGateTriggerPayload","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});z$1.object({retry_count:z$1.number().int().min(0).optional().meta(O),renewal_date:z$1.string().optional().meta(O)}).meta({id:"PaymentTriggerPayload","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});z$1.object({event_type:z$1.string().min(1).meta(O),payload:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(O)}).meta({id:"SemanticEvent","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});var Ky=z$1.enum(["system","workflow"]).meta({id:"ControlPlaneEventSource","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur}),Gy=z$1.enum(["web_signed_up","web_signed_in","cli_signed_up","cli_signed_in","cli_command_executed","changeset_submitted","changeset_approved","changeset_rejected","changeset_deployed","changeset_launched","changeset_parked","changeset_resumed","changeset_discarded","changeset_archived","config_imported","config_exported","entity_created","entity_updated","entity_deleted","web_api_error"]).meta({id:"ControlPlaneEventType","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});z$1.object({event_type:Gy.meta(O),source:Ky.meta(O),payload:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(O)}).meta({id:"ControlPlaneSemanticEvent","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});z$1.object({q:z$1.string().optional().meta(O),source:rh.optional().meta(O),event_type:z$1.string().optional().meta(O),from:z$1.string().datetime().optional().meta(O),to:z$1.string().datetime().optional().meta(O),page:z$1.coerce.number().int().min(1).default(1).meta(O),per_page:z$1.coerce.number().int().min(1).max(100).default(25).meta(O)}).meta({id:"EventSearchParams","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":Sa});var $y=z$1.enum(["stripe","apple","google"]).meta({id:"WebhookEventSource","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":Sa}),Zy=z$1.enum(["processed","failed","skipped"]).meta({id:"WebhookEventStatus","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":Sa}),Xu=z.merge($).merge(ne).extend({event_id:z$1.string().min(1).meta(O),event_type:z$1.string().min(1).meta(O),source:$y.meta(O),payload:z$1.record(z$1.string(),z$1.unknown()).default({}).meta(O),status:Zy.default("processed").meta(O),processed_at:z$1.string().datetime().optional().meta(O),error_message:z$1.string().optional().meta(O)}).meta({id:"WebhookEventLog","x-revturbine-schema-persistence":Dy,"x-revturbine-schema-exposure":Sa});z$1.object({accepted:z$1.number().int().min(0).meta(O)}).meta({id:"null","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":Sa});var Wj=500,Xj=z$1.enum(["explicit","automatic","derived","raw"]).meta({id:"EventOrigin","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur}),Yy=z$1.object({environment_id:z$1.string().min(1).meta(O),user_id:z$1.string().min(1).meta(kl),account_id:z$1.string().min(1).meta(O),event_name:z$1.string().min(1).max(120).meta(O),event_ts:z$1.string().datetime().meta(O),properties:z$1.string().optional().meta(O),surface_slot_id:z$1.string().nullable().optional().meta(O),placement_id:z$1.string().nullable().optional().meta(O),payload_id:z$1.string().nullable().optional().meta(O),request_id:z$1.string().optional().meta(O),experiment_id:z$1.string().nullable().optional().meta(O),variant_key:z$1.string().nullable().optional().meta(O),tenant_id:z$1.string().optional().meta(O),event_id:z$1.string().nullable().optional().meta(O),origin:Xj.nullable().optional().meta(O),playbook_version:z$1.string().nullable().optional().meta(O),decision_id:z$1.string().nullable().optional().meta(O),test:z$1.boolean().optional().meta(O)}).meta({id:"TrackEvent","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});z$1.object({events:z$1.array(Yy).min(1).max(Wj).meta(O)}).meta({id:"TrackIngestBatch","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});var Jj=10,Xy=z$1.enum(["sdk_init","sdk_error","sdk_validation_warning","resolution_failure"]).meta({id:"SdkMetaEventType","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur}),Jy=z$1.object({plans:z$1.number().int().min(0).meta(O),entitlements:z$1.number().int().min(0).meta(O),entitlement_rules:z$1.number().int().min(0).meta(O),segments:z$1.number().int().min(0).meta(O),placements:z$1.number().int().min(0).meta(O),placement_payloads:z$1.number().int().min(0).meta(O),content_ui_paths:z$1.number().int().min(0).meta(O),surface_templates:z$1.number().int().min(0).meta(O)}).meta({id:"SdkConfigShape","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur}),Qy=z$1.object({event_type:Xy.meta(O),occurred_at:z$1.string().datetime().meta(O),request_id:z$1.string().min(1).optional().meta(O),config_hash_id:z$1.string().min(1).max(64).optional().meta(O),sdk_version:z$1.string().min(1).max(64).optional().meta(O),runtime_mode:z$1.string().min(1).max(64).optional().meta(O),schema_version:z$1.string().min(1).max(64).optional().meta(O),bundle_version:z$1.string().min(1).max(64).optional().meta(O),config_shape:Jy.optional().meta(O),message:z$1.string().max(500).optional().meta(O),reason:z$1.string().min(1).max(64).optional().meta(O),placement_handle:z$1.string().min(1).max(64).optional().meta(O),slot_handle:z$1.string().min(1).max(64).optional().meta(O),surface:z$1.string().min(1).max(64).optional().meta(O),plan_handle:z$1.string().min(1).max(64).optional().meta(O),entitlement_handle:z$1.string().min(1).max(64).optional().meta(O)}).meta({id:"SdkMetaEvent","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});z$1.object({events:z$1.array(Qy).min(1).max(Jj).meta(O)}).meta({id:"SdkMetaIngestBatch","x-revturbine-schema-persistence":Un,"x-revturbine-schema-exposure":ur});({"/api/events/search":{get:b({operationId:"searchEvents",summary:"Search ingested events",tags:["events"],responses:{200:{description:"Paginated event results",content:{"application/json":{schema:Ff(Ny)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"events"}})},"/api/webhook-events":{get:b({operationId:"listWebhookEvents",requestParams:{query:q},summary:"List webhook event log entries",tags:["events"],responses:{200:{description:"Webhook event list",content:{"application/json":{schema:B(Xu)}}}},"x-revturbine-operation":{exposure:"internal",resource:"webhook-events",persistence:{table:"webhookEventLog",mode:"list"}}})}});var {Unrestricted:Ye}=Me,{Persisted:dd,Transient:ud}=et,{Internal:xs}=Ze,tx=ut(Ne.Playbook,{sdkInput:true}),nx=ut(Ne.Playbook,{inConfig:false,sdkInput:true}),rx=z$1.enum(["not_started","active","expired","converted","cancelled"]).meta({id:"TrialStatus","x-revturbine-schema-persistence":ud,"x-revturbine-schema-exposure":xs}),ih=z$1.enum(["time","usage"]).meta({id:"TrialLimitType","x-revturbine-schema-persistence":ud,"x-revturbine-schema-exposure":xs}),sh=z$1.object({name:Bt.meta(Ye),handle:st.meta(Ye),plan_id:z$1.string().nullable().optional().meta(Ye),segment_id:z$1.string().nullable().optional().meta(Ye),trial_limit_type:ih.default("time").meta(Ye),duration_days:z$1.number().int().min(1).max(365).nullable().optional().meta(Ye),grace_period_days:z$1.number().int().min(0).default(0).meta(Ye),usage_entitlement_handle:z$1.string().min(1).optional().meta(Ye),usage_limit_value:z$1.number().int().min(1).optional().meta(Ye),require_payment_method:z$1.boolean().default(false).meta(Ye),auto_convert:z$1.boolean().default(true).meta(Ye),convert_to_plan_id:z$1.string().optional().meta(Ye),fallback_plan_id:z$1.string().optional().meta(Ye),limit_per_customer:z$1.number().int().min(1).default(1).meta(Ye),is_active:z$1.boolean().default(true).meta(Ye),metadata:Tt.meta(Ye)}),Xa=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...Ye,readOnly:true})}).merge(sh).meta({id:"FreeTrialRule","x-revturbine-schema-persistence":dd,"x-revturbine-schema-exposure":xs,...tx,...Tn()}),e2=cn("FreeTrialRuleAnchor"),ix=z$1.enum(["signup","first_premium_access","manual"]).meta({id:"ReverseTrialStartPolicy","x-revturbine-schema-persistence":ud,"x-revturbine-schema-exposure":xs}),ah=z$1.object({name:Bt.meta(Ye),handle:st.meta(Ye),premium_plan_id:z$1.string().min(1).meta(Ye),fallback_plan_id:z$1.string().min(1).meta(Ye),segment_id:z$1.string().nullable().optional().meta(Ye),trial_limit_type:ih.default("time").meta(Ye),duration_days:z$1.number().int().min(1).max(365).nullable().optional().meta(Ye),usage_entitlement_handle:z$1.string().min(1).optional().meta(Ye),usage_limit_value:z$1.number().int().min(1).optional().meta(Ye),start_policy:ix.default("signup").meta(Ye),show_upgrade_prompt_at_day:z$1.number().int().min(0).optional().meta(Ye),entitlements_during_trial:z$1.array(z$1.string()).default([]).meta(Ye),is_active:z$1.boolean().default(true).meta(Ye),metadata:Tt.meta(Ye)}),Ja=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...Ye,readOnly:true})}).merge(ah).meta({id:"ReverseTrialRule","x-revturbine-schema-persistence":dd,"x-revturbine-schema-exposure":xs,...tx,...Tn()}),t2=cn("ReverseTrialRuleAnchor"),oh=z$1.enum(["1_per_lifetime","1_per_plan","1_per_year","unlimited"]).meta({id:"TrialLimitPolicy","x-revturbine-schema-persistence":ud,"x-revturbine-schema-exposure":xs}),lh=z$1.enum(["per_customer","per_email_domain"]).meta({id:"TrialEligibilityScope","x-revturbine-schema-persistence":ud,"x-revturbine-schema-exposure":xs}),Qa=z.merge($).merge(ne).extend({trial_limit_policy:oh.default("1_per_lifetime").meta(Ye),eligibility_scope:lh.default("per_customer").meta(Ye)}).meta({id:"FreeTrialSettings","x-revturbine-schema-persistence":dd,"x-revturbine-schema-exposure":xs,...nx}),eo=z.merge($).merge(ne).extend({trial_limit_policy:oh.default("1_per_lifetime").meta(Ye),eligibility_scope:lh.default("per_customer").meta(Ye)}).meta({id:"ReverseTrialSettings","x-revturbine-schema-persistence":dd,"x-revturbine-schema-exposure":xs,...nx}),cd=z.merge($).merge(ne).extend({customer_id:z$1.string().min(1).meta(Ye),rule_id:z$1.string().min(1).meta(Ye),rule_type:z$1.enum(["free_trial","reverse_trial"]).meta(Ye),plan_id:z$1.string().min(1).meta(Ye),status:rx.default("active").meta(Ye),started_at:z$1.string().datetime().meta({...Ye,readOnly:true}),expires_at:z$1.string().datetime().nullable().optional().meta(Ye),trial_limit_type:ih.default("time").meta(Ye),usage_entitlement_handle:z$1.string().min(1).optional().meta(Ye),usage_limit_value:z$1.number().int().min(1).optional().meta(Ye),converted_at:qt.meta(Ye),cancelled_at:qt.meta(Ye),metadata:Tt.meta(Ye)}).meta({id:"TrialInstance","x-revturbine-schema-persistence":dd,"x-revturbine-schema-exposure":xs});({"/api/free-trial-rule-anchors":{get:b({operationId:"listFreeTrialRuleAnchors",requestParams:{query:q},summary:"List free trial rule anchors (identity registry)",tags:["trials"],responses:{200:{description:"Free trial rule anchor list",content:{"application/json":{schema:B(e2)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-rule-anchors",persistence:{table:"freeTrialRules",mode:"list"}}})},"/api/trials/free-rules":{get:b({operationId:"listFreeTrialRules",requestParams:{query:q},summary:"List free trial rules",tags:["trials"],responses:{200:{description:"Free trial rule list",content:{"application/json":{schema:B(Xa)}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"list"}}})},"/api/trials/free-rules/{ruleId}":{get:b({operationId:"getFreeTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Get free trial rule",tags:["trials"],responses:{200:{description:"Free trial rule",content:{"application/json":{schema:Xa}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"get"}}}),patch:b({operationId:"updateFreeTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Update free trial rule",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:Xa.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Xa}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"update"}}}),delete:b({operationId:"deleteFreeTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Delete free trial rule",tags:["trials"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"trial-rules",persistence:{table:"freeTrialRuleVersions",mode:"delete"}}})},"/api/reverse-trial-rule-anchors":{get:b({operationId:"listReverseTrialRuleAnchors",requestParams:{query:q},summary:"List reverse trial rule anchors (identity registry)",tags:["trials"],responses:{200:{description:"Reverse trial rule anchor list",content:{"application/json":{schema:B(t2)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rule-anchors",persistence:{table:"reverseTrialRules",mode:"list"}}})},"/api/trials/reverse-rules":{get:b({operationId:"listReverseTrialRules",requestParams:{query:q},summary:"List reverse trial rules",tags:["trials"],responses:{200:{description:"Reverse trial rule list",content:{"application/json":{schema:B(Ja)}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"list"}}})},"/api/trials/reverse-rules/{ruleId}":{get:b({operationId:"getReverseTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Get reverse trial rule",tags:["trials"],responses:{200:{description:"Reverse trial rule",content:{"application/json":{schema:Ja}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"get"}}}),patch:b({operationId:"updateReverseTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Update reverse trial rule",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:Ja.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Ja}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"update"}}}),delete:b({operationId:"deleteReverseTrialRule",requestParams:{path:z$1.object({ruleId:z$1.string()})},summary:"Delete reverse trial rule",tags:["trials"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-rules",persistence:{table:"reverseTrialRuleVersions",mode:"delete"}}})},"/api/trials/free-settings":{get:b({operationId:"listFreeTrialSettings",requestParams:{query:q},summary:"List free trial settings (one row per tenant)",tags:["trials"],responses:{200:{description:"Free trial settings list",content:{"application/json":{schema:B(Qa)}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-settings",persistence:{table:"freeTrialSettings",mode:"list"}}})},"/api/trials/free-settings/{settingsId}":{get:b({operationId:"getFreeTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Get free trial settings",tags:["trials"],responses:{200:{description:"Free trial settings",content:{"application/json":{schema:Qa}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-settings",persistence:{table:"freeTrialSettings",mode:"get"}}}),patch:b({operationId:"updateFreeTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Update free trial settings",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:Qa.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Qa}}}},"x-revturbine-operation":{exposure:"internal",resource:"free-trial-settings",persistence:{table:"freeTrialSettings",mode:"update"}}})},"/api/trials/reverse-settings":{get:b({operationId:"listReverseTrialSettings",requestParams:{query:q},summary:"List reverse trial settings (one row per tenant)",tags:["trials"],responses:{200:{description:"Reverse trial settings list",content:{"application/json":{schema:B(eo)}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-settings",persistence:{table:"reverseTrialSettings",mode:"list"}}})},"/api/trials/reverse-settings/{settingsId}":{get:b({operationId:"getReverseTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Get reverse trial settings",tags:["trials"],responses:{200:{description:"Reverse trial settings",content:{"application/json":{schema:eo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-settings",persistence:{table:"reverseTrialSettings",mode:"get"}}}),patch:b({operationId:"updateReverseTrialSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Update reverse trial settings",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:eo.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:eo}}}},"x-revturbine-operation":{exposure:"internal",resource:"reverse-trial-settings",persistence:{table:"reverseTrialSettings",mode:"update"}}})},"/api/trials/instances":{get:b({operationId:"listTrialInstances",requestParams:{query:q},summary:"List trial instances",tags:["trials"],responses:{200:{description:"Trial instance list",content:{"application/json":{schema:B(cd)}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"list"}}})},"/api/trials/instances/{instanceId}":{get:b({operationId:"getTrialInstance",requestParams:{path:z$1.object({instanceId:z$1.string()})},summary:"Get trial instance",tags:["trials"],responses:{200:{description:"Trial instance",content:{"application/json":{schema:cd}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"get"}}})},"/api/trials/instances/{instanceId}/cancel":{post:b({operationId:"cancelTrialInstance",requestParams:{path:z$1.object({instanceId:z$1.string()})},summary:"Cancel an active trial",tags:["trials"],responses:{200:{description:"Cancelled",content:{"application/json":{schema:cd}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"update"}}})},"/api/trials/instances/{instanceId}/convert":{post:b({operationId:"convertTrialInstance",requestParams:{path:z$1.object({instanceId:z$1.string()})},summary:"Convert trial to paid subscription",tags:["trials"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({plan_id:z$1.string().optional()})}}},responses:{200:{description:"Converted",content:{"application/json":{schema:cd}}}},"x-revturbine-operation":{exposure:"internal",resource:"trial-instances",persistence:{table:"trialInstances",mode:"update"}}})}});var {Unrestricted:Sn}=Me,{Persisted:dh,Transient:sx}=et,{Internal:md}=Ze,ax=ut(Ne.Playbook,{inConfig:false,sdkInput:true}),ox=z$1.enum(["draft","ramping","winning","neutral","needs_attention","paused","complete"]).meta({id:"ExperimentStatus","x-revturbine-schema-persistence":sx,"x-revturbine-schema-exposure":md}),lx=z$1.enum(["placement_ab","entitlement_ab","plan_ab","pricing_ab","custom"]).meta({id:"ExperimentType","x-revturbine-schema-persistence":sx,"x-revturbine-schema-exposure":md}),cx=z$1.object({variant_id:z$1.string().min(1),name:Bt,weight:z$1.number().min(0).max(1).default(.5),is_control:z$1.boolean().default(false),config:z$1.record(z$1.string(),z$1.unknown()).default({})}).meta({id:"ExperimentVariant","x-revturbine-schema-persistence":dh,"x-revturbine-schema-exposure":md,...ax}),Ss=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...Sn,readOnly:true}),name:Bt.meta(Sn),handle:st.meta(Sn),description:z$1.string().max(1e3).optional().meta(Sn),experiment_type:lx.meta(Sn),status:ox.default("draft").meta(Sn),target_resource_id:z$1.string().optional().meta(Sn),target_segment_ids:z$1.array(z$1.string()).default([]).meta(Sn),variants:z$1.array(cx).min(2).meta(Sn),primary_metric:z$1.string().min(1).meta(Sn),metric_threshold:z$1.number().default(.05).meta(Sn),secondary_metrics:z$1.array(z$1.string()).default([]).meta(Sn),traffic_allocation:z$1.number().min(0).max(1).default(1).meta(Sn),started_at:qt.meta(Sn),ended_at:qt.meta(Sn),confidence_threshold:z$1.number().min(0).max(1).default(.95).meta(Sn),winning_variant_id:z$1.string().nullable().default(null).meta(Sn),metadata:Tt.meta(Sn)}).meta({id:"Experiment","x-revturbine-schema-persistence":dh,"x-revturbine-schema-exposure":md,...ax,...Tn()}),r2=cn("ExperimentAnchor"),dx=_l,ch=z.merge($).merge(ne).extend({experiment_id:z$1.string().optional().meta(Sn),resource_type:z$1.string().min(1).meta(Sn),resource_id:z$1.string().min(1).meta(Sn),severity:dx.default("info").meta(Sn),title:z$1.string().min(1).max(300).meta(Sn),description:z$1.string().max(2e3).meta(Sn),suggested_action:z$1.string().max(1e3).optional().meta(Sn),estimated_impact:z$1.number().optional().meta(Sn),is_dismissed:z$1.boolean().default(false).meta(Sn),metadata:Tt.meta(Sn)}).meta({id:"OptimizationSuggestion","x-revturbine-schema-persistence":dh,"x-revturbine-schema-exposure":md});({"/api/experiment-anchors":{get:b({operationId:"listExperimentAnchors",requestParams:{query:q},summary:"List experiment anchors (identity registry)",tags:["experiments"],responses:{200:{description:"Experiment anchor list",content:{"application/json":{schema:B(r2)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiment-anchors",persistence:{table:"experiments",mode:"list"}}})},"/api/experiments":{get:b({operationId:"listExperiments",requestParams:{query:q},summary:"List experiments",tags:["experiments"],responses:{200:{description:"Experiment list",content:{"application/json":{schema:B(Ss)}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"list"}}})},"/api/experiments/{experimentId}":{get:b({operationId:"getExperiment",requestParams:{path:z$1.object({experimentId:z$1.string()})},summary:"Get experiment",tags:["experiments"],responses:{200:{description:"Experiment",content:{"application/json":{schema:Ss}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"get"}}}),patch:b({operationId:"updateExperiment",requestParams:{path:z$1.object({experimentId:z$1.string()})},summary:"Update experiment",tags:["experiments"],requestBody:{required:true,content:{"application/json":{schema:Ss.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Ss}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"update"}}}),delete:b({operationId:"deleteExperiment",requestParams:{path:z$1.object({experimentId:z$1.string()})},summary:"Delete experiment",tags:["experiments"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"delete"}}})},"/api/experiments/{experimentId}/start":{post:b({operationId:"startExperiment",requestParams:{path:z$1.object({experimentId:z$1.string()})},summary:"Start experiment (begin traffic allocation)",tags:["experiments"],responses:{200:{description:"Started",content:{"application/json":{schema:Ss}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"update"}}})},"/api/experiments/{experimentId}/pause":{post:b({operationId:"pauseExperiment",requestParams:{path:z$1.object({experimentId:z$1.string()})},summary:"Pause running experiment",tags:["experiments"],responses:{200:{description:"Paused",content:{"application/json":{schema:Ss}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"update"}}})},"/api/experiments/{experimentId}/complete":{post:b({operationId:"completeExperiment",requestParams:{path:z$1.object({experimentId:z$1.string()})},summary:"Complete experiment and declare winner",tags:["experiments"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({winning_variant_id:z$1.string()})}}},responses:{200:{description:"Completed",content:{"application/json":{schema:Ss}}}},"x-revturbine-operation":{exposure:"internal",resource:"experiments",persistence:{table:"experimentVersions",mode:"update"}}})},"/api/optimization-suggestions":{get:b({operationId:"listOptimizationSuggestions",requestParams:{query:q},summary:"List optimization suggestions",tags:["experiments"],responses:{200:{description:"Suggestion list",content:{"application/json":{schema:B(ch)}}}},"x-revturbine-operation":{exposure:"internal",resource:"optimization-suggestions",persistence:{table:"optimizationSuggestions",mode:"list"}}})},"/api/optimization-suggestions/{suggestionId}/dismiss":{post:b({operationId:"dismissOptimizationSuggestion",requestParams:{path:z$1.object({suggestionId:z$1.string()})},summary:"Dismiss an optimization suggestion",tags:["experiments"],responses:{200:{description:"Dismissed",content:{"application/json":{schema:ch}}}},"x-revturbine-operation":{exposure:"internal",resource:"optimization-suggestions",persistence:{table:"optimizationSuggestions",mode:"update"}}})}});var {Unrestricted:fr,Financial:ux}=Me,{Persisted:s2,Transient:mx}=et,{Internal:uh}=Ze,a2=ut(Ne.Playbook,{sdkInput:true}),px=z$1.enum(["draft","scheduled","live","expired","archived"]).meta({id:"PromotionStatus","x-revturbine-schema-persistence":mx,"x-revturbine-schema-exposure":uh}),fx=z$1.enum(["percentage","fixed_amount","free_months"]).meta({id:"DiscountType","x-revturbine-schema-persistence":mx,"x-revturbine-schema-exposure":uh}),Ns=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({...fr,readOnly:true}),name:Bt.meta(fr),handle:st.meta(fr),description:z$1.string().max(1e3).optional().meta(fr),rt_status:px.default("draft").meta(fr),discount_type:fx.meta(fr),discount_value:z$1.number().min(0).meta(ux),currency:z$1.string().length(3).default("USD").meta(ux),applicable_plan_ids:z$1.array(z$1.string()).default([]).meta(fr),applicable_addon_ids:z$1.array(z$1.string()).default([]).meta(fr),target_segment_ids:z$1.array(z$1.string()).default([]).meta(fr),max_redemptions:z$1.number().int().min(0).nullable().default(null).meta(fr),current_redemptions:z$1.number().int().min(0).default(0).meta({...fr,readOnly:true}),coupon_code:z$1.string().max(100).optional().meta(fr),starts_at:qt.meta(fr),ends_at:qt.meta(fr),stripe_coupon_id:z$1.string().nullable().default(null).meta(fr),stripe_promotion_code_id:z$1.string().nullable().default(null).meta(fr),auto_sync_stripe:z$1.boolean().default(false).meta(fr),metadata:Tt.meta(fr)}).meta({id:"Promotion","x-revturbine-schema-persistence":s2,"x-revturbine-schema-exposure":uh,...a2,...Tn()}),o2=cn("PromotionAnchor");({"/api/promotion-anchors":{get:b({operationId:"listPromotionAnchors",requestParams:{query:q},summary:"List promotion anchors (identity registry)",tags:["promotions"],responses:{200:{description:"Promotion anchor list",content:{"application/json":{schema:B(o2)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"promotion-anchors",persistence:{table:"promotions",mode:"list"}}})},"/api/promotions":{get:b({operationId:"listPromotions",requestParams:{query:q},summary:"List promotions",tags:["promotions"],responses:{200:{description:"Promotion list",content:{"application/json":{schema:B(Ns)}}}},"x-revturbine-operation":{exposure:"internal",resource:"promotions",persistence:{table:"promotionVersions",mode:"list"}}})},"/api/promotions/{promotionId}":{get:b({operationId:"getPromotion",requestParams:{path:z$1.object({promotionId:z$1.string()})},summary:"Get promotion",tags:["promotions"],responses:{200:{description:"Promotion",content:{"application/json":{schema:Ns}}}},"x-revturbine-operation":{exposure:"internal",resource:"promotions",persistence:{table:"promotionVersions",mode:"get"}}}),patch:b({operationId:"updatePromotion",requestParams:{path:z$1.object({promotionId:z$1.string()})},summary:"Update promotion",tags:["promotions"],requestBody:{required:true,content:{"application/json":{schema:Ns.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Ns}}}},"x-revturbine-operation":{exposure:"internal",resource:"promotions",persistence:{table:"promotionVersions",mode:"update"}}}),delete:b({operationId:"deletePromotion",requestParams:{path:z$1.object({promotionId:z$1.string()})},summary:"Delete (archive) promotion",tags:["promotions"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"promotions",persistence:{table:"promotionVersions",mode:"delete"}}})},"/api/promotions/{promotionId}/sync-stripe":{post:b({operationId:"syncPromotionToStripe",requestParams:{path:z$1.object({promotionId:z$1.string()})},summary:"Sync promotion to Stripe as coupon/promotion code",tags:["promotions"],responses:{200:{description:"Synced",content:{"application/json":{schema:Ns}}}},"x-revturbine-operation":{exposure:"internal",resource:"promotions",persistence:{table:"promotionVersions",mode:"update"}}})},"/api/promotions/{promotionId}/duplicate":{post:b({operationId:"duplicatePromotion",requestParams:{path:z$1.object({promotionId:z$1.string()})},summary:"Duplicate promotion",tags:["promotions"],responses:{201:{description:"Duplicated",content:{"application/json":{schema:Ns}}}},"x-revturbine-operation":{exposure:"internal",resource:"promotions",persistence:{table:"promotionVersions",mode:"create"}}})}});var {Unrestricted:jn,Pii:mh}=Me,{Persisted:ph}=et,{Internal:fh}=Ze,hx=z.merge($).merge(ne).extend({customer_id:z$1.string().min(1).meta(mh),placement_id:z$1.string().min(1).meta(jn),payload_id:z$1.string().nullable().default(null).meta(jn),variant_id:z$1.string().nullable().default(null).meta(jn),surface_type:z$1.string().meta(jn),presented_at:z$1.string().datetime().meta({...jn,readOnly:true}),dismissed_at:qt.meta(jn),cta_clicked_at:qt.meta(jn),cta_action_type:z$1.string().nullable().default(null).meta(jn),converted:z$1.boolean().default(false).meta(jn),session_id:z$1.string().optional().meta(jn),metadata:Tt.meta(jn)}).meta({id:"PresentationRecord","x-revturbine-schema-persistence":ph,"x-revturbine-schema-exposure":fh}),gx=z.merge($).merge(ne).extend({customer_id:z$1.string().min(1).meta(mh),placement_id:z$1.string().min(1).meta(jn),decision:z$1.enum(["show","suppress","defer"]).meta(jn),reason:z$1.string().max(500).meta(jn),matched_rules:z$1.array(z$1.object({rule_id:z$1.string(),rule_type:z$1.string(),matched:z$1.boolean()})).default([]).meta(jn),experiment_id:z$1.string().nullable().default(null).meta(jn),variant_id:z$1.string().nullable().default(null).meta(jn),latency_ms:z$1.number().min(0).optional().meta(jn)}).meta({id:"DecisionLog","x-revturbine-schema-persistence":ph,"x-revturbine-schema-exposure":fh}),_x=z.merge($).merge(ne).extend({customer_id:z$1.string().min(1).meta(mh),entitlement_handle:z$1.string().min(1).meta(jn),entitlement_type:z$1.string().meta(jn),result:z$1.enum(["granted","denied","limited","metered"]).meta(jn),current_usage:z$1.number().nullable().default(null).meta(jn),limit:z$1.number().nullable().default(null).meta(jn),source:z$1.enum(["plan","addon","override","trial"]).meta(jn),source_id:z$1.string().min(1).meta(jn),latency_ms:z$1.number().min(0).optional().meta(jn)}).meta({id:"EntitlementEvalLog","x-revturbine-schema-persistence":ph,"x-revturbine-schema-exposure":fh});({"/api/presentation-records":{get:b({operationId:"listPresentationRecords",requestParams:{query:q},summary:"List presentation records",tags:["runtime"],responses:{200:{description:"Presentation records",content:{"application/json":{schema:B(hx)}}}},"x-revturbine-operation":{exposure:"internal",resource:"presentation-records",persistence:{table:"presentationRecords",mode:"list"}}})},"/api/decision-logs":{get:b({operationId:"listDecisionLogs",requestParams:{query:q},summary:"List decision logs",tags:["runtime"],responses:{200:{description:"Decision logs",content:{"application/json":{schema:B(gx)}}}},"x-revturbine-operation":{exposure:"internal",resource:"decision-logs",persistence:{table:"decisionLogs",mode:"list"}}})},"/api/entitlement-eval-logs":{get:b({operationId:"listEntitlementEvalLogs",requestParams:{query:q},summary:"List entitlement evaluation logs",tags:["runtime"],responses:{200:{description:"Entitlement eval logs",content:{"application/json":{schema:B(_x)}}}},"x-revturbine-operation":{exposure:"internal",resource:"entitlement-eval-logs",persistence:{table:"entitlementEvalLogs",mode:"list"}}})}});var {Unrestricted:_}=Me,{Persisted:jl,Transient:Qe}=et,{Internal:Oi,External:kt}=Ze,bt=ut(Ne.Playbook,{sdkInput:true}),Rl=ut(Ne.Playbook,{sdkInput:false}),Ia=ut(Ne.Playbook,{inConfig:false,sdkInput:false}),bx=ut(Ne.Playbook,{inConfig:false,sdkInput:true}),pd=ut(Ne.Playbook,{inConfig:false,sdkInput:true,source:Zr.CodeConstant}),hh=ut(Ne.Playbook,{inConfig:false,sdkInput:true,source:Zr.Runtime}),gh=ut(Ne.Playbook,{inConfig:false,sdkInput:false,source:Zr.Runtime}),d2=ut(Ne.Billing,{sdkInput:false}),u2=ut(Ne.Metering,{sdkInput:false}),m2=ut(Ne.Branding,{inConfig:true,sdkInput:true}),p2=ut(Ne.Branding,{sdkInput:false}),vx="1.0.0",El=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({..._,readOnly:true}),name:Bt.meta(_),handle:st.meta(_),description:ai.meta(_),is_default:z$1.boolean().default(false).meta(_),entitlement_ids:z$1.array(z$1.string()).default([]).meta(_),metadata:Tt.meta(_)}).meta({id:"SeatType","x-revturbine-schema-persistence":jl,"x-revturbine-schema-exposure":Oi,...Ia,...Tn()}),f2=cn("SeatTypeAnchor"),wl=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({..._,readOnly:true}),handle:st.meta(_),label:z$1.string().min(1).meta(_),description:z$1.string().nullable().default(null).meta(_),category:z$1.enum(["user","plan","usage","trial","billing","promotion","custom"]).meta(_),data_source:z$1.string().nullable().default(null).meta(_),example_value:z$1.string().nullable().default(null).meta(_),value_map:z$1.record(z$1.string(),z$1.string()).default({}).meta(_),format:z$1.enum(["string","number","currency","percentage","date"]).nullable().default(null).meta(_),metadata:Tt.meta(_)}).meta({id:"PersonalizationToken","x-revturbine-schema-persistence":jl,"x-revturbine-schema-exposure":Oi,...Ia,...Tn()}),h2=cn("PersonalizationTokenAnchor"),yx=z$1.enum(["not_started","started","details_submitted","charges_enabled","activated","deauthorized"]).meta({id:"OnboardingState","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":Oi}),Ju=z.merge($).merge(ne).merge(gt).merge(Ct).extend({handle:st.meta({..._,readOnly:true}),stripe_account_id:z$1.string().min(1).meta(_),live_mode:z$1.boolean().default(false).meta(_),onboarding_state:yx.default("not_started").meta({..._,readOnly:true}),onboarding_complete:z$1.boolean().default(false).meta({..._,readOnly:true}),charges_enabled:z$1.boolean().default(false).meta({..._,readOnly:true}),details_submitted:z$1.boolean().default(false).meta({..._,readOnly:true}),payouts_enabled:z$1.boolean().default(false).meta({..._,readOnly:true}),webhook_secret_set:z$1.boolean().default(false).meta({..._,readOnly:true}),sync_products:z$1.boolean().default(true).meta(_),sync_prices:z$1.boolean().default(true).meta(_),sync_subscriptions:z$1.boolean().default(true).meta(_),sync_invoices:z$1.boolean().default(false).meta(_),default_currency:z$1.string().length(3).default("USD").meta(_),tax_behavior:z$1.enum(["inclusive","exclusive","unspecified"]).default("unspecified").meta(_),last_sync_at:z$1.string().optional().meta({..._,readOnly:true}),metadata:Tt.meta(_)}).meta({id:"StripeIntegrationConfig","x-revturbine-schema-persistence":jl,"x-revturbine-schema-exposure":Oi,...d2,...rr()});z$1.object({theme:z$1.record(z$1.string(),z$1.unknown()).optional().meta(_),workspace_name:z$1.string().optional().meta(_),logo_url:z$1.string().optional().meta(_),support_email:z$1.string().optional().meta(_)}).meta({id:"BrandingConfig","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...p2});var Ol=z.merge($).merge(ne).merge(gt).merge(Ct).extend({handle:st.meta({..._,readOnly:true}),entitlement_id:z$1.string().min(1).meta(_),meter_key:z$1.string().min(1).max(100).meta(_),aggregation_type:z$1.enum(["sum","count","max","last_value"]).default("sum").meta(_),reset_period:z$1.enum(["none","daily","weekly","monthly","yearly"]).default("monthly").meta(_),stripe_meter_id:z$1.string().nullable().default(null).meta(_),is_active:z$1.boolean().default(true).meta(_),metadata:Tt.meta(_)}).meta({id:"MeteringConfig","x-revturbine-schema-persistence":jl,"x-revturbine-schema-exposure":Oi,...u2,...rr()}),_h=z$1.enum(["block","warn","downgrade","throttle","notify_admin","custom"]).meta({id:"EnforcementAction","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":Oi}),Al=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({..._,readOnly:true}),handle:st.meta({..._,readOnly:true}),entitlement_id:z$1.string().min(1).meta(_),soft_limit_percent:z$1.number().min(0).max(100).default(80).meta(_),hard_limit_percent:z$1.number().min(0).max(100).default(100).meta(_),soft_limit_action:_h.default("warn").meta(_),hard_limit_action:_h.default("block").meta(_),grace_period_hours:z$1.number().int().min(0).default(0).meta(_),notification_channels:z$1.array(z$1.enum(["email","in_app","webhook"])).default(["in_app"]).meta(_),is_active:z$1.boolean().default(true).meta(_)}).meta({id:"UsageEnforcementSettings","x-revturbine-schema-persistence":jl,"x-revturbine-schema-exposure":Oi,...bx,...rr()}),_2=cn("UsageEnforcementSettingsAnchor"),xx=z$1.object({kind:z$1.enum(["template","slot"]).meta(_),id:z$1.string().min(1).meta(_),label:z$1.string().min(1).optional().meta(_)}).meta({id:"PlacementSettingsCapRuleGroupItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":Oi}),Sx=z$1.object({id:z$1.string().min(1).meta(_),group:z$1.array(xx).min(1).meta(_),cap:z$1.object({count:z$1.number().int().min(1).meta(_),period:z$1.enum(["session","day","week","month"]).meta(_)}).meta(_)}).meta({id:"PlacementSettingsCapRule","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":Oi}),Ix=z$1.enum(["off","test_users","all_traffic"]).meta({id:"PlacementTestMode","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":Oi}),vh=z$1.object({capRules:z$1.array(Sx).default([]).meta(_),sessionCooldownMinutes:z$1.number().int().min(0).default(30).meta(_),remindLaterMinutes:z$1.number().int().min(0).default(60).meta(_),testMode:Ix.default("off").meta(_)}).meta({id:"PlacementSettingsCapState","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":Oi}),Qu=z.merge($).merge(ne).merge(gt).merge(Ct).extend({anchor_id:z$1.string().min(1).meta({..._,readOnly:true}),handle:st.meta({..._,readOnly:true}),global_frequency_cap:vh.nullable().default(null).meta(_),global_frequency_cap_period:z$1.enum(["hour","day","week","month","session"]).nullable().default(null).meta(_),suppress_for_paid:z$1.boolean().default(false).meta(_),suppress_for_trial:z$1.boolean().default(false).meta(_),allow_stacking:z$1.boolean().default(false).meta(_),priority_collision_strategy:z$1.enum(["highest_priority","most_recent","random"]).default("highest_priority").meta(_)}).meta({id:"PlacementSettings","x-revturbine-schema-persistence":jl,"x-revturbine-schema-exposure":Oi,...bx,...rr()}),b2=cn("PlacementSettingsAnchor"),yh=z$1.object({field:z$1.string().min(1).meta(_),operator:z$1.enum(["eq","neq","gt","lt","gte","lte","contains","in"]).meta(_),value:z$1.string().meta(_)}).meta({id:"RevTurbineConfigSegmentsItemPredicatesItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt}),xh=z$1.object({name:z$1.string().min(1).meta(_),handle:z$1.string().min(1).meta(_),predicates:z$1.array(yh).optional().meta(_),dimension_id:z$1.string().optional().meta(_),experiment_id:z$1.string().min(1).optional().meta(_)}).meta({id:"RevTurbineConfigSegmentsItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Px=z$1.object({unique_handle:z$1.string().min(1).meta(_),name:z$1.string().min(1).meta(_),tier_position:z$1.number().int().min(0).default(0).meta(_),sort_order:z$1.number().int().min(0).default(0).meta(_),visibility:bs.default("public").meta(_)}).meta({id:"RevTurbineConfigPlansItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Tx=z$1.object({unique_handle:z$1.string().min(1).meta(_),name:z$1.string().min(1).meta(_),sort_order:z$1.number().int().min(0).default(0).meta(_),visibility:bs.default("public").meta(_)}).meta({id:"RevTurbineConfigAddonsItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...Rl}),Cx=z$1.object({handle:z$1.string().min(1).meta(_),plan_handle:z$1.string().min(1).meta(_),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(_),segment_handle:z$1.string().nullable().default(null).meta(_),price_amount:z$1.number().min(0).meta(_),pricing_model:Ga.meta(_),visibility:bs.default("public").meta(_),stripe_price_id:z$1.string().nullable().default(null).meta(_),price_source:vl.meta(_)}).meta({id:"RevTurbineConfigPlanVariationsItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...Ia}),kx=z$1.object({handle:z$1.string().min(1).meta(_),addon_handle:z$1.string().min(1).meta(_),billing_period:z$1.enum(["monthly","annual","one_time","custom"]).meta(_),segment_handle:z$1.string().nullable().default(null).meta(_),price_amount:z$1.number().min(0).meta(_),pricing_model:Ga.meta(_),visibility:bs.default("public").meta(_),stripe_price_id:z$1.string().nullable().default(null).meta(_),price_source:vl.meta(_)}).meta({id:"RevTurbineConfigAddonVariationsItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...Ia}),Rx=z$1.object({handle:z$1.string().min(1).meta(_),name:z$1.string().min(1).meta(_),description:z$1.string().nullable().default(null).meta(_),is_default:z$1.boolean().default(false).meta(_),entitlement_handles:z$1.array(z$1.string()).default([]).meta(_)}).meta({id:"RevTurbineConfigSeatTypesItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Ex=z$1.object({handle:z$1.string().min(1).meta(_),entitlement_handle:z$1.string().nullable().default(null).meta(_),soft_limit_percent:z$1.number().int().min(0).nullable().default(null).meta(_),hard_limit_percent:z$1.number().int().min(0).nullable().default(null).meta(_),soft_limit_action:z$1.string().meta(_),hard_limit_action:z$1.string().meta(_),grace_period_hours:z$1.number().int().min(0).nullable().default(null).meta(_),notification_channels:z$1.array(z$1.string()).default([]).meta(_),is_active:z$1.boolean().default(true).meta(_)}).meta({id:"RevTurbineConfigEnforcementDefaultsItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),wx=z$1.object({handle:z$1.string().min(1).meta(_),global_frequency_cap:vh.nullable().default(null).meta(_),global_frequency_cap_period:z$1.enum(["hour","day","week","month","session"]).nullable().default(null).meta(_),suppress_for_paid:z$1.boolean().default(false).meta(_),suppress_for_trial:z$1.boolean().default(false).meta(_),allow_stacking:z$1.boolean().default(false).meta(_),priority_collision_strategy:z$1.string().nullable().default(null).meta(_)}).meta({id:"RevTurbineConfigPlacementSettingsItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Ox=z$1.object({handle:z$1.string().min(1).meta(_),name:z$1.string().min(1).meta(_),category:z$1.string().nullable().default(null).meta(_),visibility_toggle:z$1.boolean().default(true).meta(_),source_type:z$1.string().nullable().default(null).meta(_)}).meta({id:"RevTurbineConfigSegmentDimensionsItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Ax=z$1.object({handle:z$1.string().min(1).meta(_),entitlement_handle:z$1.string().min(1).meta(_),meter_handle:z$1.string().min(1).meta(_),limit:z$1.number().int().min(0).nullable().default(null).meta(_),reset_period:z$1.string().nullable().default(null).meta(_)}).meta({id:"RevTurbineConfigMeterBindingsItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),jx=z$1.object({unique_handle:z$1.string().min(1).meta(_),name:z$1.string().min(1).meta(_),type:gl.meta(_),unit:z$1.string().optional().meta(_),tier_definitions:z$1.array(z$1.object({name:z$1.string(),handle:z$1.string(),description:z$1.string().optional()})).optional().meta(_)}).meta({id:"RevTurbineConfigEntitlementsItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Fx=z$1.object({id:z$1.string().min(1).meta(_),entitlement_id:z$1.string().min(1).meta(_),targets:z$1.array(zu).min(1).meta(_),segment_ids:z$1.array(z$1.string()).default([]).meta(_),kind:gl.optional().meta({..._,readOnly:true}),unit:z$1.string().optional().meta({..._,readOnly:true}),tier_name:z$1.string().optional().meta({..._,readOnly:true}),tier_description:z$1.string().optional().meta({..._,readOnly:true}),...va.pick({enabled:true,limit_value:true,enforcement:true,tier_value:true,period_scope:true,included_count:true,seat_type_id:true,initial_grant:true,allowance_value:true,rollover_enabled:true,max_balance:true,reset_period:true,max_seats:true,rate_value:true,amount_cents:true,currency:true}).shape,current_usage:z$1.number().default(0).meta(_),allocation:yl.optional().meta(_)}).meta({id:"RevTurbineConfigEntitlementRulesItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Lx=z$1.object({slot_id:z$1.string().min(1).meta(_),active:z$1.boolean().meta(_),triggers:z$1.array(z$1.string()).meta(_)}).meta({id:"RevTurbineConfigSlotConfigsItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Vx=z$1.object({id:z$1.string().min(1).meta(_),label:z$1.string().min(1).meta(_),description:z$1.string().meta(_),surface_type:z$1.string().meta(_),placement_handle:z$1.string().min(1).meta(_),template:z$1.string().optional().meta(_)}).meta({id:"RevTurbineConfigPlacementSlotsItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Ux=z$1.object({name:z$1.string().min(1).meta(_),type:z$1.string().optional().meta(_),required:z$1.boolean().optional().meta(_)}).meta({id:"RevTurbineConfigSurfaceTemplatesItemFieldsItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt}),Bx=z$1.object({id:z$1.string().min(1).meta(_),surface_type:z$1.string().meta(_),fields:z$1.array(Ux).optional().meta(_)}).meta({id:"RevTurbineConfigSurfaceTemplatesItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Sh=z$1.enum(["open_checkout_modal","navigate_to_plans","open_upgrade_modal","open_placement","book_demo","open_feature_tour","extend_trial","switch_billing_period","custom_url","dismiss","contact_sales","complete_onboarding","invite_teammate","refer_friend","verify_work_email","update_payment_method","enable_auto_renewal","manage_subscription","snooze"]).meta({id:"RevTurbineConfigUiPathActionType","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt}),qx=z$1.object({name:z$1.string().min(1).meta(_),action_type:Sh.meta(_),plan_handle:z$1.string().optional().meta(_),promotion_id:z$1.string().optional().meta(_),placement_handle:z$1.string().optional().meta(_),url:z$1.string().optional().meta(_),tour_id:z$1.string().optional().meta(_),target_billing_period:z$1.enum(["monthly","annual"]).optional().meta(_),description:z$1.string().optional().meta(_)}).meta({id:"ContentUiPath","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Dx=z$1.object({id:z$1.string().meta(_),name:z$1.string().meta(_),discount:z$1.string().meta(_),type:z$1.string().meta(_),status:z$1.string().meta(_)}).meta({id:"ContentPromotion","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Mx=z$1.object({token:z$1.string().regex(/^[a-z][a-z0-9_]*$/).meta(_),label:z$1.string().min(1).meta(_),description:z$1.string().optional().meta(_),category:z$1.enum(["user","plan","usage","trial","billing","promotion","custom"]).meta(_),data_source:z$1.string().optional().meta(_),example_value:z$1.string().optional().meta(_),value_map:z$1.record(z$1.string(),z$1.string()).optional().meta(_),format:z$1.enum(["string","number","currency","percentage","date"]).optional().meta(_)}).meta({id:"RevTurbineConfigPersonalizationTokensItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),bh=z$1.object({header:z$1.string().optional().meta(_),body:z$1.string().optional().meta(_),cta_label:z$1.string().optional().meta(_),secondary_cta_label:z$1.string().optional().meta(_)}).catchall(z$1.unknown()).meta({id:"MessageBlockContent","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt}),Nx=z$1.object({block_id:z$1.string().min(1).meta(_),tenant_id:z$1.string().min(1).meta(_),name:z$1.string().min(1).meta(_),surface_template_id:z$1.string().optional().meta(_),default_content:bh.meta(_),segment_overrides:z$1.array(z$1.object({segment_value_id:z$1.string(),content:bh})).optional().meta(_),child_blocks:z$1.array(z$1.object({slot:z$1.string(),block_id:z$1.string()})).optional().meta(_),tokens_used:z$1.array(z$1.string()).optional().meta(_),status:z$1.enum(["draft","active","archived"]).meta(_),created_at:z$1.string().datetime().meta({..._,readOnly:true}),updated_at:z$1.string().datetime().meta({..._,readOnly:true})}).meta({id:"MessageBlock","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Hx=z$1.object({label:z$1.string().meta(_),path:bl.meta(_),config:z$1.record(z$1.string(),z$1.string()).optional().meta(_)}).meta({id:"RevTurbineConfigStudioCtaConfig","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt}),Ih=z$1.object({template_id:z$1.string().min(1).meta(_),fields:z$1.record(z$1.string(),z$1.string()).meta(_),ctas:z$1.array(Hx).meta(_)}).meta({id:"RevTurbineConfigStudioPayloadSurface","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt}),Ph=z$1.object({plan_ids:z$1.array(z$1.string()).meta(_),billing_cadences:z$1.array(z$1.string()).optional().meta(_),segment_chips:z$1.array(z$1.string()).meta(_)}).meta({id:"RevTurbineConfigStudioPayloadTarget","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt}),zx=z$1.object({count:z$1.number().int().min(1).meta(_),period:z$1.enum(["session","day","week","month","lifetime"]).meta(_)}).meta({id:"RevTurbineConfigPeriodCap","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt}),Th=z$1.object({max_per_period:zx.optional().meta(_),cooldown_days:z$1.number().int().min(0).optional().meta(_)}).meta({id:"RevTurbineConfigStudioPayloadCaps","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt}),Kx=z$1.object({id:z$1.string().min(1).meta(_),target:Ph.meta(_),surfaces:z$1.array(Ih).meta(_),caps:Th.optional().meta(_),surface_slot_ids:z$1.array(z$1.string()).optional().meta(_),remind_later_minutes:z$1.number().int().min(0).nullable().optional().meta(_),created_at:z$1.string().optional().meta({..._,readOnly:true}),recommendation_strategy:z$1.enum(["next_tier_up","best_value","custom"]).optional().default("next_tier_up").meta(_),recommendation_plan_override:z$1.string().optional().meta(_)}).meta({id:"RevTurbineConfigStudioPayload","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt}),Gx=z$1.discriminatedUnion("type",[z$1.object({type:z$1.literal("surface_render"),slot_id:z$1.string().min(1)}),z$1.object({type:z$1.literal("entitlement_gate"),entitlement_handle:z$1.string().min(1),tier_threshold:z$1.string().optional()}),z$1.object({type:z$1.literal("usage_threshold"),entitlement_handle:z$1.string().min(1),threshold_percent:ba}),z$1.object({type:z$1.literal("credit_threshold"),entitlement_handle:z$1.string().min(1),threshold_percent:ba}),z$1.object({type:z$1.literal("seat_threshold"),entitlement_handle:z$1.string().min(1),threshold_percent:ba}),z$1.object({type:z$1.literal("trial_started"),trial_type:z$1.enum(["free","reverse"]).optional()}),z$1.object({type:z$1.literal("trial_progress"),progress_percent:z$1.number().min(1).max(100)}),z$1.object({type:z$1.literal("trial_ending"),days_before_end:z$1.number().int().min(0)}),z$1.object({type:z$1.literal("trial_ended")}),z$1.object({type:z$1.literal("trial_converted")}),z$1.object({type:z$1.literal("qualifier"),qualifier:z$1.string().min(1)})]).meta({id:"RevTurbineConfigPlacementTrigger","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt}),$x=z$1.enum(["fixed","gated","usage_credit_seat","trials","other_conversion","retention"]).meta({id:"RevTurbineConfigPlacementCategory","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt}),Ch=z$1.object({id:z$1.string().min(1).meta(_),name:z$1.string().min(1).meta(_),category:$x.meta(_),trigger:Gx.meta(_),payloads:z$1.array(Kx).meta(_),order:z$1.number().int().min(0).meta(_)}).meta({id:"RevTurbineConfigPlacementItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Zx=z$1.object({payload_id:z$1.string().min(1).meta(_),placement_id:z$1.string().min(1).meta(_),target:Ph.meta(_),caps:Th.optional().meta(_),remind_later_minutes:z$1.number().int().min(0).nullable().optional().meta(_),created_at:z$1.string().meta({..._,readOnly:true}),updated_at:z$1.string().datetime().optional().meta({..._,readOnly:true}),source_mode:z$1.enum(["inline","content_linked"]).meta(_),surfaces:z$1.array(Ih).optional().meta(_),surface_slot_ids:z$1.array(z$1.string()).optional().meta(_),content_link:z$1.object({message_block_id:z$1.string().optional(),ui_path_id:z$1.string().optional(),promotion_id:z$1.string().optional(),content_payload_id:z$1.string().optional()}).optional().meta(_)}).meta({id:"RevTurbineConfigPlacementPayloadItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),v2=z$1.object({kind:z$1.string().min(1).meta(_),schema_version:z$1.number().int().nonnegative().meta(_),config:z$1.unknown().meta(_)}).meta({id:"RevTurbineConfigExtensionRulesItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),y2=z.merge(sh).meta({id:"RevTurbineConfigFreeTrialRuleItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...Ia}),x2=z.merge(ah).meta({id:"RevTurbineConfigReverseTrialRuleItem","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...Ia}),Yx=z$1.object({plans:z$1.array(Px).meta({..._,...bt}),addons:z$1.array(Tx).optional().meta({..._,...Rl}),entitlements:z$1.array(jx).meta({..._,...bt}),entitlement_rules:z$1.array(Fx).meta({..._,...bt}),segments:z$1.array(xh).meta({..._,...bt}),content_ui_paths:z$1.array(qx).meta({..._,...bt}),slot_configs:z$1.array(Lx).optional().meta({..._,...bt,...ed({since:"0.1.117",replacement:"SDK-local activation/trigger state",removeAfter:"one compatibility window",reason:"Slot activation moved to SDK-local state (plan 118 TASK-6); no longer a Playbook authoring input."})}),content_overrides:z$1.record(z$1.string(),z$1.record(z$1.string(),z$1.string())).optional().meta({..._,...bt,...ed({since:"0.1.117",replacement:"Message Block / Placement Payload content",removeAfter:"one compatibility window",reason:"Content overrides moved to Message Block / Payload content (plan 118 TASK-6); no longer a Playbook authoring input."})}),theme:z$1.record(z$1.string(),z$1.unknown()).optional().meta({..._,...m2,...ed({since:"0.1.111",replacement:"SDK branding argument",removeAfter:"one compatibility window",reason:"Branding is independently owned and is not Playbook strategy."})}),placement_slots:z$1.array(Vx).optional().meta({..._,...bt}),message_blocks:z$1.array(Nx).optional().meta({..._,...bt}),placement_payloads:z$1.array(Zx).optional().meta({..._,...bt}),placements:z$1.array(Ch).optional().meta({..._,...bt}),content_promotions:z$1.array(Dx).optional().meta({..._,...bt}),personalization_tokens:z$1.array(Mx).optional().meta({..._,...bt}),surface_templates:z$1.array(Bx).optional().meta({..._,...bt}),free_trial_rules:z$1.array(y2).optional().meta({..._,...Rl}),reverse_trial_rules:z$1.array(x2).optional().meta({..._,...Rl}),plan_variations:z$1.array(Cx).optional().meta({..._,...Rl}),addon_variations:z$1.array(kx).optional().meta({..._,...Rl}),extension_rules:z$1.array(v2).optional().meta({..._,...bt}),seat_types:z$1.array(Rx).optional().meta({..._,...bt}),enforcement_defaults:z$1.array(Ex).optional().meta({..._,...bt}),placement_settings:z$1.array(wx).optional().meta({..._,...bt}),segment_dimensions:z$1.array(Ox).optional().meta({..._,...bt}),meter_bindings:z$1.array(Ax).optional().meta({..._,...bt}),experiments:z$1.array(z$1.unknown()).max(0).optional().meta({..._,...Ia}),signal_catalog:z$1.object({}).strict().optional().meta({..._,...Ia})}).meta({id:"PlaybookBody","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt}),Wx=z$1.object({artifact_type:z$1.literal("playbook").meta({..._,...pd,readOnly:true}),format_version:z$1.literal(vx).meta({..._,...pd,readOnly:true}),playbook_handle:z$1.string().min(1).default("default").meta({..._,...pd}),playbook_version_id:z$1.string().nullable().default(null).meta({..._,...hh,readOnly:true}),tenant_id:z$1.string().min(1).optional().meta({..._,...gh,readOnly:true}),environment_id:z$1.string().min(1).optional().meta({..._,...gh,readOnly:true}),project_id:z$1.string().min(1).optional().meta({..._,...gh,readOnly:true}),exported_at:z$1.string().datetime().optional().meta({..._,...hh,readOnly:true}),schema_version:z$1.string().min(1).optional().meta({..._,...pd,readOnly:true}),bundle_schema_version:z$1.number().int().nonnegative().optional().meta({..._,...pd,readOnly:true})}).meta({id:"PlaybookHeader","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...hh}),em=Wx.extend(Yx.shape).meta({"x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt});function S2(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Xx(n){if(!S2(n))return n;let e={...n};return "artifact_type"in e||(e.artifact_type="playbook"),"version"in e&&("format_version"in e||(e.format_version=e.version),delete e.version),"change_set_id"in e&&("playbook_version_id"in e||(e.playbook_version_id=e.change_set_id),delete e.change_set_id),e}z$1.preprocess(Xx,em).meta({id:"Playbook","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt});z$1.preprocess(Xx,em.strict()).meta({id:"PlaybookStrict","x-revturbine-schema-persistence":Qe,"x-revturbine-schema-exposure":kt,...bt});({"/api/seat-type-anchors":{get:b({operationId:"listSeatTypeAnchors",requestParams:{query:q},summary:"List seat type anchors (identity registry)",tags:["config"],responses:{200:{description:"Seat type anchor list",content:{"application/json":{schema:B(f2)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-type-anchors",persistence:{table:"seatTypes",mode:"list"}}})},"/api/config/seat-types":{get:b({operationId:"listSeatTypes",requestParams:{query:q},summary:"List seat types",tags:["config"],responses:{200:{description:"Seat type list",content:{"application/json":{schema:B(El)}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"list"}}}),post:b({operationId:"createSeatType",summary:"Create seat type",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Kn(El)}}},responses:{201:{description:"Created",content:{"application/json":{schema:El}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"create"}}})},"/api/config/seat-types/{id}":{patch:b({operationId:"updateSeatType",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Update seat type",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:El.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:El}}}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"update"}}}),delete:b({operationId:"deleteSeatType",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Delete seat type",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"seat-types",persistence:{table:"seatTypeVersions",mode:"delete"}}})},"/api/personalization-token-anchors":{get:b({operationId:"listPersonalizationTokenAnchors",requestParams:{query:q},summary:"List personalization token anchors (identity registry)",tags:["config"],responses:{200:{description:"Personalization token anchor list",content:{"application/json":{schema:B(h2)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-token-anchors",persistence:{table:"personalizationTokens",mode:"list"}}})},"/api/config/personalization-tokens":{get:b({operationId:"listPersonalizationTokens",requestParams:{query:q},summary:"List personalization tokens",tags:["config"],responses:{200:{description:"Personalization token list",content:{"application/json":{schema:B(wl)}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"list"}}}),post:b({operationId:"createPersonalizationToken",summary:"Create personalization token",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Kn(wl)}}},responses:{201:{description:"Created",content:{"application/json":{schema:wl}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"create"}}})},"/api/config/personalization-tokens/{id}":{patch:b({operationId:"updatePersonalizationToken",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Update personalization token",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:wl.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:wl}}}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"update"}}}),delete:b({operationId:"deletePersonalizationToken",requestParams:{path:z$1.object({id:z$1.string()})},summary:"Delete personalization token",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"personalization-tokens",persistence:{table:"personalizationTokenVersions",mode:"delete"}}})},"/api/config/stripe":{put:b({operationId:"upsertStripeIntegrationConfig",summary:"Create or update Stripe integration config",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:qn(Ju)}}},responses:{200:{description:"Saved",content:{"application/json":{schema:Ju}}}},"x-revturbine-operation":{exposure:"internal",resource:"stripe-config",persistence:{table:"stripeIntegrationConfig",mode:"upsert"}}})},"/api/config/metering":{get:b({operationId:"listMeteringConfigs",requestParams:{query:q},summary:"List metering configurations",tags:["config"],responses:{200:{description:"Metering config list",content:{"application/json":{schema:B(Ol)}}}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"list"}}}),post:b({operationId:"createMeteringConfig",summary:"Create metering configuration",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Kn(Ol)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Ol}}}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"create"}}})},"/api/config/metering/{meteringId}":{patch:b({operationId:"updateMeteringConfig",requestParams:{path:z$1.object({meteringId:z$1.string()})},summary:"Update metering configuration",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Ol.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Ol}}}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"update"}}}),delete:b({operationId:"deleteMeteringConfig",requestParams:{path:z$1.object({meteringId:z$1.string()})},summary:"Delete metering configuration",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"metering-config",persistence:{table:"meteringConfigs",mode:"delete"}}})},"/api/usage-enforcement-setting-anchors":{get:b({operationId:"listUsageEnforcementSettingsAnchors",requestParams:{query:q},summary:"List usage enforcement setting anchors (identity registry)",tags:["config"],responses:{200:{description:"Usage enforcement setting anchor list",content:{"application/json":{schema:B(_2)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement-setting-anchors",persistence:{table:"usageEnforcementSettings",mode:"list"}}})},"/api/config/usage-enforcement":{get:b({operationId:"listUsageEnforcementSettings",requestParams:{query:q},summary:"List usage enforcement settings",tags:["config"],responses:{200:{description:"Enforcement settings",content:{"application/json":{schema:B(Al)}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"list"}}}),post:b({operationId:"createUsageEnforcementSettings",summary:"Create usage enforcement settings",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Kn(Al)}}},responses:{201:{description:"Created",content:{"application/json":{schema:Al}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"create"}}})},"/api/config/usage-enforcement/{settingsId}":{patch:b({operationId:"updateUsageEnforcementSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Update usage enforcement settings",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:Al.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Al}}}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"update"}}}),delete:b({operationId:"deleteUsageEnforcementSettings",requestParams:{path:z$1.object({settingsId:z$1.string()})},summary:"Delete usage enforcement settings",tags:["config"],responses:{204:{description:"Deleted"}},"x-revturbine-operation":{exposure:"internal",resource:"usage-enforcement",persistence:{table:"usageEnforcementSettingVersions",mode:"delete"}}})},"/api/placement-setting-anchors":{get:b({operationId:"listPlacementSettingsAnchors",requestParams:{query:q},summary:"List placement setting anchors (identity registry)",tags:["config"],responses:{200:{description:"Placement setting anchor list",content:{"application/json":{schema:B(b2)}}},default:{description:"Error response",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-setting-anchors",persistence:{table:"placementSettings",mode:"list"}}})},"/api/config/placement-settings":{put:b({operationId:"upsertPlacementSettings",summary:"Create or update global placement settings",tags:["config"],requestBody:{required:true,content:{"application/json":{schema:qn(Qu)}}},responses:{200:{description:"Saved",content:{"application/json":{schema:Qu}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-settings",persistence:{table:"placementSettingVersions",mode:"upsert"}}})}});var {Unrestricted:Hs}=Me,{Persisted:Jx}=et,{Internal:Qx}=Ze,eS=z$1.enum(["create","update","delete","archive","restore","reorder","duplicate","sync","publish"]).meta({id:"ChangeLogAction","x-revturbine-schema-persistence":Jx,"x-revturbine-schema-exposure":Qx}),kh=z.merge($).merge(ne).extend({action:eS.meta(Hs),resource_type:z$1.string().min(1).max(100).meta(Hs),resource_id:z$1.string().min(1).meta(Hs),resource_name:z$1.string().max(200).optional().meta(Hs),actor_id:z$1.string().min(1).meta(Hs),actor_email:z$1.string().email().optional().meta(Hs),diff:z$1.object({before:z$1.record(z$1.string(),z$1.unknown()).optional(),after:z$1.record(z$1.string(),z$1.unknown()).optional()}).optional().meta(Hs),summary:z$1.string().max(1e3).optional().meta(Hs),metadata:Tt.meta(Hs)}).meta({id:"ChangeLogEntry","x-revturbine-schema-persistence":Jx,"x-revturbine-schema-exposure":Qx});({"/api/changelog":{get:b({operationId:"listChangeLogEntries",requestParams:{query:q},summary:"List change log entries",tags:["changelog"],responses:{200:{description:"Change log entries",content:{"application/json":{schema:B(kh)}}}},"x-revturbine-operation":{exposure:"internal",resource:"changelog",persistence:{table:"changeLogEntries",mode:"list"}}})},"/api/changelog/{entryId}":{get:b({operationId:"getChangeLogEntry",requestParams:{path:z$1.object({entryId:z$1.string()})},summary:"Get change log entry by ID",tags:["changelog"],responses:{200:{description:"Change log entry",content:{"application/json":{schema:kh}}}},"x-revturbine-operation":{exposure:"internal",resource:"changelog",persistence:{table:"changeLogEntries",mode:"get"}}})}});var {Unrestricted:tm}=Me,{Persisted:k2,Transient:R2}=et,{Internal:tS}=Ze,nS=z$1.enum(["active","suspended","archived"]).meta({id:"TenantStatus","x-revturbine-schema-persistence":R2,"x-revturbine-schema-exposure":tS}),Ks=z.merge($).extend({name:Bt.meta(tm),handle:st.meta(tm),status:nS.default("active").meta(tm),metadata:Tt.meta(tm)}).meta({id:"Tenant","x-revturbine-schema-persistence":k2,"x-revturbine-schema-exposure":tS});({"/api/tenants":{get:b({operationId:"listTenants",requestParams:{query:q},summary:"List tenants",tags:["tenants"],responses:{200:{description:"Tenant list",content:{"application/json":{schema:B(Ks)}}}},"x-revturbine-operation":{exposure:"internal",resource:"tenants",persistence:{table:"tenants",mode:"list"}}})},"/api/tenants/{tenantId}":{get:b({operationId:"getTenant",requestParams:{path:z$1.object({tenantId:z$1.string()})},summary:"Get tenant by ID",tags:["tenants"],responses:{200:{description:"Tenant",content:{"application/json":{schema:Ks}}}},"x-revturbine-operation":{exposure:"internal",resource:"tenants",persistence:{table:"tenants",mode:"get"}}}),patch:b({operationId:"updateTenant",requestParams:{path:z$1.object({tenantId:z$1.string()})},summary:"Update tenant",tags:["tenants"],requestBody:{required:true,content:{"application/json":{schema:Ks.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:Ks}}}},"x-revturbine-operation":{exposure:"internal",resource:"tenants",persistence:{table:"tenants",mode:"update"}}})},"/api/tenants/{tenantId}/suspend":{post:b({operationId:"suspendTenant",requestParams:{path:z$1.object({tenantId:z$1.string()})},summary:"Suspend tenant (disables all API access)",tags:["tenants"],responses:{200:{description:"Suspended",content:{"application/json":{schema:Ks}}}},"x-revturbine-operation":{exposure:"internal",resource:"tenants",persistence:{table:"tenants",mode:"update"}}})},"/api/tenants/{tenantId}/reactivate":{post:b({operationId:"reactivateTenant",requestParams:{path:z$1.object({tenantId:z$1.string()})},summary:"Reactivate a suspended tenant",tags:["tenants"],responses:{200:{description:"Reactivated",content:{"application/json":{schema:Ks}}}},"x-revturbine-operation":{exposure:"internal",resource:"tenants",persistence:{table:"tenants",mode:"update"}}})}});var {Unrestricted:Ai}=Me,{Persisted:w2,Transient:rS}=et,{Internal:Rh}=Ze,iS=z$1.enum(["active","archived","locked"]).meta({id:"EnvironmentStatus","x-revturbine-schema-persistence":rS,"x-revturbine-schema-exposure":Rh}),to=z.merge($).merge(ne).extend({name:Bt.meta(Ai),handle:st.meta(Ai),description:ai.meta(Ai),is_production:z$1.boolean().default(false).meta({...Ai,readOnly:true}),status:iS.default("active").meta(Ai),cloned_from_environment_id:z$1.string().nullable().default(null).meta({...Ai,readOnly:true}),cloned_at:qt.meta({...Ai,readOnly:true}),cloned_at_sequence:z$1.number().int().min(0).nullable().default(null).meta({...Ai,readOnly:true}),requires_approval:z$1.boolean().default(false).meta(Ai),auto_deploy_on_approval:z$1.boolean().default(false).meta(Ai),created_by:z$1.string().optional().meta(Ai),metadata:Tt.meta(Ai)}).meta({id:"Environment","x-revturbine-schema-persistence":w2,"x-revturbine-schema-exposure":Rh}),sS=z$1.object({source_environment_id:z$1.string().min(1),target_environment_id:z$1.string().min(1),playbook_version_ids:z$1.array(z$1.string()).optional(),strategy:z$1.enum(["all_current","selected_playbook_versions"]).default("all_current")}).meta({id:"EnvironmentPromotionRequest","x-revturbine-schema-persistence":rS,"x-revturbine-schema-exposure":Rh});({"/api/environments":{get:b({operationId:"listEnvironments",requestParams:{query:q},summary:"List environments",tags:["environments"],responses:{200:{description:"Environment list",content:{"application/json":{schema:B(to)}}}},"x-revturbine-operation":{exposure:"internal",resource:"environments",persistence:{table:"environments",mode:"list"}}}),post:b({operationId:"createEnvironment",summary:"Create environment (optionally cloned from another)",tags:["environments"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({name:z$1.string().min(1).max(200),handle:z$1.string().min(1).max(100),description:z$1.string().max(500).optional(),clone_from_environment_id:z$1.string().optional(),requires_approval:z$1.boolean().optional()})}}},responses:{201:{description:"Created",content:{"application/json":{schema:to}}},default:{description:"Error",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"environments",persistence:{table:"environments",mode:"create"}}})},"/api/environments/{environmentId}":{get:b({operationId:"getEnvironment",requestParams:{path:z$1.object({environmentId:z$1.string()})},summary:"Get environment by ID",tags:["environments"],responses:{200:{description:"Environment",content:{"application/json":{schema:to}}}},"x-revturbine-operation":{exposure:"internal",resource:"environments",persistence:{table:"environments",mode:"get"}}}),patch:b({operationId:"updateEnvironment",requestParams:{path:z$1.object({environmentId:z$1.string()})},summary:"Update environment settings",tags:["environments"],requestBody:{required:true,content:{"application/json":{schema:to.partial()}}},responses:{200:{description:"Updated",content:{"application/json":{schema:to}}}},"x-revturbine-operation":{exposure:"internal",resource:"environments",persistence:{table:"environments",mode:"update"}}})},"/api/environments/{environmentId}/archive":{post:b({operationId:"archiveEnvironment",requestParams:{path:z$1.object({environmentId:z$1.string()})},summary:"Archive environment (production cannot be archived)",tags:["environments"],responses:{200:{description:"Archived",content:{"application/json":{schema:to}}},default:{description:"Error",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"environments",persistence:{table:"environments",mode:"update"}}})},"/api/environments/promote":{post:b({operationId:"promoteEnvironment",summary:"Promote (merge) changes from one environment to another",tags:["environments"],requestBody:{required:true,content:{"application/json":{schema:sS}}},responses:{200:{description:"Promotion result",content:{"application/json":{schema:z$1.object({promoted_count:z$1.number().int(),conflict_count:z$1.number().int(),conflicts:z$1.array(z$1.object({handle:z$1.string(),resource_type:z$1.string(),source_sequence:z$1.number().int(),target_sequence:z$1.number().int()}))})}}},default:{description:"Error",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"environments",persistence:{table:"environments",mode:"promote"}}})}});var {Unrestricted:De,Pii:fd}=Me,{Transient:Is,Persisted:A2}=et,{External:$i}=Ze,aS=z$1.enum(["milestone_version","milestone_order"]).meta({id:"SupersessionReason","x-revturbine-schema-persistence":Is,"x-revturbine-schema-exposure":$i});z$1.object({superseded_output_id:z$1.string().min(1).meta(De),superseded_by:z$1.string().min(1).meta(De),reason:aS.meta(De)}).meta({id:"SupersessionRecord","x-revturbine-schema-persistence":A2,"x-revturbine-schema-exposure":$i,...Me.Operational});var oS=z$1.enum(Qc).meta({id:"EntitlementStatus","x-revturbine-schema-persistence":Is,"x-revturbine-schema-exposure":$i}),Eh=z$1.object({output_id:z$1.string().meta(De),category:z$1.string().meta(De),surface:z$1.object({template:z$1.string().optional().meta(De),type:Jc.meta(De),slot_id:z$1.string().optional().meta(De)}).meta(De),content:z$1.record(z$1.string(),z$1.unknown()).meta(De),promotion:z$1.record(z$1.string(),z$1.unknown()).optional().meta(De),cta_path:z$1.record(z$1.string(),z$1.unknown()).optional().meta(De),ui_path:z$1.record(z$1.string(),z$1.unknown()).optional().meta(De),rule_id:z$1.string().meta(De),decision_id:z$1.string().meta(De),config_version:z$1.string().meta(De),present_upsell:z$1.boolean().meta(De),experiment_id:z$1.string().optional().meta(De),variant_key:z$1.string().optional().meta(De),experiment_version_id:z$1.string().optional().meta(De)}).meta({id:"PlacementDecisionOutput","x-revturbine-schema-persistence":Is,"x-revturbine-schema-exposure":$i}),lS=z$1.object({status:oS.meta(De),allowed:z$1.boolean().meta(De),reason:z$1.string().optional().meta(De),current_tier:z$1.string().optional().meta(De),limit:z$1.number().optional().meta(De),used:z$1.number().optional().meta(De),remaining:z$1.number().optional().meta(De),placement:Eh.optional().meta(De)}).meta({id:"EntitlementCheckResult","x-revturbine-schema-persistence":Is,"x-revturbine-schema-exposure":$i});z$1.object({id:z$1.string().meta(De),name:z$1.string().optional().meta(De),discount:z$1.string().optional().meta(De),type:z$1.string().optional().meta(De),status:z$1.string().optional().meta(De)}).meta({id:"RuntimePromotionSnapshot","x-revturbine-schema-persistence":Is,"x-revturbine-schema-exposure":$i});var cS=z$1.object({id:z$1.string().meta(fd),anonymous_id:z$1.string().optional().meta(De),traits:z$1.record(z$1.string(),z$1.unknown()).optional().meta(fd)}).meta({id:"ServerEvaluationPayloadUser","x-revturbine-schema-persistence":Is,"x-revturbine-schema-exposure":$i}),dS=z$1.object({slot_id:z$1.string().optional().meta(De),entitlement_handle:z$1.string().optional().meta(De),plan_handle:z$1.string().optional().meta(De),placement_handle:z$1.string().optional().meta(De),visible:z$1.boolean().meta(De),output:Eh.optional().meta(De),reason_codes:z$1.array(z$1.string()).optional().meta(De)}).meta({id:"ServerEvaluationPayloadDecisionsItem","x-revturbine-schema-persistence":Is,"x-revturbine-schema-exposure":$i}),uS=lS,mS=sd.meta({id:"ServerEvaluationPayloadTrialStatus","x-revturbine-schema-persistence":Is,"x-revturbine-schema-exposure":$i}),pS=z$1.object({segments:z$1.array(z$1.string()).optional().meta(De),traits:z$1.record(z$1.string(),z$1.unknown()).optional().meta(fd),usage_balances:z$1.record(z$1.string(),z$1.number()).optional().meta(De)}).meta({id:"ServerEvaluationPayloadUserContext","x-revturbine-schema-persistence":Is,"x-revturbine-schema-exposure":$i});z$1.object({version:z$1.literal("1.0.0").meta(De),request_id:z$1.string().meta(De),tenant_id:z$1.string().meta(De),evaluated_at:z$1.string().datetime().meta(De),ttl_seconds:z$1.number().int().min(0).max(86400).meta(De),user:cS.meta(fd),decisions:z$1.array(dS).meta(De),entitlements:z$1.record(z$1.string(),uS).optional().meta(De),theme:z$1.record(z$1.string(),z$1.unknown()).optional().meta(De),trial_status:mS.optional().meta(De),user_context:pS.optional().meta(fd)}).meta({id:"ServerEvaluationPayload","x-revturbine-schema-persistence":Is,"x-revturbine-schema-exposure":$i});var {Unrestricted:$t}=Me,{Persisted:V2,Transient:nm}=et,{Internal:hd}=Ze,fS=z$1.enum(["draft","awaiting_approval","approved","deploying","deployed","rejected","archived"]).meta({id:"PlaybookVersionStatus","x-revturbine-schema-persistence":nm,"x-revturbine-schema-exposure":hd}),Fl=z.merge($).merge(ne).extend({environment_id:z$1.string().min(1).meta($t),name:Bt.meta($t),description:z$1.string().max(2e3).optional().meta($t),status:fS.default("draft").meta($t),labels:z$1.array(z$1.string()).default([]).meta($t),created_by:z$1.string().min(1).meta($t),submitted_by:z$1.string().nullable().default(null).meta({...$t,readOnly:true}),reviewed_by:z$1.string().nullable().default(null).meta({...$t,readOnly:true}),deployed_by:z$1.string().nullable().default(null).meta({...$t,readOnly:true}),submitted_at:qt.meta({...$t,readOnly:true}),reviewed_at:qt.meta({...$t,readOnly:true}),deployed_at:qt.meta({...$t,readOnly:true}),base_snapshot_sequence:z$1.number().int().min(0).default(0).meta({...$t,readOnly:true}),entry_count:z$1.number().int().min(0).default(0).meta({...$t,readOnly:true}),conflict_count:z$1.number().int().min(0).default(0).meta({...$t,readOnly:true}),rollback_of_playbook_version_id:z$1.string().nullable().default(null).meta($t),cherry_picked_from_playbook_version_id:z$1.string().nullable().default(null).meta($t),review_notes:z$1.string().max(2e3).optional().meta($t),rejection_reason:z$1.string().max(2e3).optional().meta($t),snapshot:z$1.record(z$1.string(),z$1.unknown()).nullable().default(null).meta({...$t,readOnly:true}),bundle:z$1.string().nullable().default(null).meta({...$t,readOnly:true}),metadata:Tt.meta($t)}).meta({id:"PlaybookVersion","x-revturbine-schema-persistence":V2,"x-revturbine-schema-exposure":hd}),wh=z$1.object({handle:z$1.string().meta($t),resource_type:z$1.string().meta($t),resource_name:z$1.string().optional().meta($t),action:z$1.enum(["create","update","delete"]).meta($t),has_conflict:z$1.boolean().meta($t)}).meta({id:"PlaybookVersionEntrySummary","x-revturbine-schema-persistence":nm,"x-revturbine-schema-exposure":hd}),hS=z$1.object({playbook_version_id:z$1.string().meta($t),entries:z$1.array(wh).meta($t),total_entries:z$1.number().int().min(0).meta($t),total_conflicts:z$1.number().int().min(0).meta($t),deployable:z$1.boolean().meta($t)}).meta({id:"PlaybookVersionDiff","x-revturbine-schema-persistence":nm,"x-revturbine-schema-exposure":hd}),gS=z$1.object({playbook_version_id:z$1.string().meta($t),deployed_count:z$1.number().int().min(0).meta($t),superseded_count:z$1.number().int().min(0).meta($t),skipped_conflicts:z$1.number().int().min(0).meta($t),deployed_at:z$1.string().datetime().meta($t)}).meta({id:"PlaybookVersionDeployResult","x-revturbine-schema-persistence":nm,"x-revturbine-schema-exposure":hd});({"/api/playbook-versions/{playbookVersionId}/submit":{post:b({operationId:"submitPlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Submit playbook version for approval",tags:["playbook-versions"],responses:{200:{description:"Submitted",content:{"application/json":{schema:Fl}}},default:{description:"Error",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"update"}}})},"/api/playbook-versions/{playbookVersionId}/approve":{post:b({operationId:"approvePlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Approve playbook version (may auto-deploy if environment allows)",tags:["playbook-versions"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({review_notes:z$1.string().max(2e3).optional()})}}},responses:{200:{description:"Approved",content:{"application/json":{schema:Fl}}},default:{description:"Error",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"update"}}})},"/api/playbook-versions/{playbookVersionId}/reject":{post:b({operationId:"rejectPlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Reject playbook version",tags:["playbook-versions"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({rejection_reason:z$1.string().max(2e3)})}}},responses:{200:{description:"Rejected",content:{"application/json":{schema:Fl}}},default:{description:"Error",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"update"}}})},"/api/playbook-versions/{playbookVersionId}/deploy":{post:b({operationId:"deployPlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Deploy playbook version \u2014 activates all entries, supersedes previous versions",tags:["playbook-versions"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({force:z$1.boolean().default(false)})}}},responses:{200:{description:"Deploy result",content:{"application/json":{schema:gS}}},default:{description:"Error (conflicts exist)",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"deploy"}}})},"/api/playbook-versions/{playbookVersionId}/archive":{post:b({operationId:"archivePlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Archive (abandon) a playbook version",tags:["playbook-versions"],responses:{200:{description:"Archived",content:{"application/json":{schema:Fl}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"update"}}})},"/api/playbook-versions/{playbookVersionId}/preview":{get:b({operationId:"previewPlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Preview diff of all entries vs current state (dry-run deploy)",tags:["playbook-versions"],responses:{200:{description:"Diff preview",content:{"application/json":{schema:hS}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"preview"}}})},"/api/playbook-versions/{playbookVersionId}/conflicts":{get:b({operationId:"listPlaybookVersionConflicts",requestParams:{path:z$1.object({playbookVersionId:z$1.string()}),query:q},summary:"List entries with sequence conflicts (base_sequence \u2260 current)",tags:["playbook-versions"],responses:{200:{description:"Conflict list",content:{"application/json":{schema:B(wh)}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"list"}}})},"/api/playbook-versions/{playbookVersionId}/rollback":{post:b({operationId:"rollbackPlaybookVersion",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Create a rollback playbook version that reverts a deployed one",tags:["playbook-versions"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({name:z$1.string().min(1).max(200).optional()})}}},responses:{201:{description:"Rollback PlaybookVersion created",content:{"application/json":{schema:Fl}}},default:{description:"Error",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"create"}}})},"/api/playbook-versions/{playbookVersionId}/cherry-pick":{post:b({operationId:"cherryPickEntries",requestParams:{path:z$1.object({playbookVersionId:z$1.string()})},summary:"Cherry-pick individual entries from this PlaybookVersion into another",tags:["playbook-versions"],requestBody:{required:true,content:{"application/json":{schema:z$1.object({handles:z$1.array(z$1.string()).min(1),target_playbook_version_id:z$1.string().min(1)})}}},responses:{200:{description:"Cherry-picked",content:{"application/json":{schema:z$1.object({copied_count:z$1.number().int()})}}},default:{description:"Error",content:{"application/json":{schema:Oe}}}},"x-revturbine-operation":{exposure:"internal",resource:"playbook-versions",persistence:{table:"playbookVersions",mode:"update"}}})}});var {Unrestricted:Rt,Pii:B2}=Me,{Persisted:Zi}=et,{Internal:Yi}=Ze,_S=z$1.enum(["active","revoked","rotating"]).meta({id:"ApiKeyStatus","x-revturbine-schema-persistence":Zi,"x-revturbine-schema-exposure":Yi}),gd=z.merge($).merge(ne).extend({name:Bt.meta(Rt),key_hash:z$1.string().min(1).meta({...B2,readOnly:true}),key_prefix:z$1.string().min(1).max(20).meta({...Rt,readOnly:true}),key_last4:z$1.string().length(4).meta({...Rt,readOnly:true}),status:_S.default("active").meta(Rt),last_used_at:qt.meta({...Rt,readOnly:true}),expires_at:qt.meta(Rt)}).meta({id:"ApiKey","x-revturbine-schema-persistence":Zi,"x-revturbine-schema-exposure":Yi}),bS=z$1.enum(["boolean","string","number","json"]).meta({id:"FlagValueType","x-revturbine-schema-persistence":Zi,"x-revturbine-schema-exposure":Yi}),Pa=z.merge($).merge(ne).extend({key:z$1.string().min(1).max(100).meta(Rt),value_type:bS.default("boolean").meta(Rt),value:z$1.string().max(4e3).default("false").meta(Rt),description:ai.meta(Rt),enabled:z$1.boolean().default(true).meta(Rt)}).meta({id:"FeatureFlag","x-revturbine-schema-persistence":Zi,"x-revturbine-schema-exposure":Yi}),rm=z.merge($).merge(ne).extend({workspace_name:z$1.string().min(1).max(200).meta(Rt),support_email:z$1.string().email().nullable().default(null).meta(Rt),timezone:z$1.string().max(50).default("UTC").meta(Rt),default_currency:z$1.string().length(3).default("USD").meta(Rt),logo_url:z$1.string().url().nullable().default(null).meta(Rt),activity_window_days:z$1.number().int().min(1).default(30).meta(Rt),activity_high_min:z$1.number().int().min(1).default(10).meta(Rt),activity_medium_min:z$1.number().int().min(1).default(3).meta(Rt),activity_low_min:z$1.number().int().min(1).default(1).meta(Rt)}).meta({id:"TenantConfig","x-revturbine-schema-persistence":Zi,"x-revturbine-schema-exposure":Yi}),im=z.merge($).merge(ne).extend({server_url:z$1.string().url().max(500).meta(Rt),api_token_hint:z$1.string().max(50).nullable().default(null).meta(Rt),allow_write_actions:z$1.boolean().default(false).meta(Rt),enabled_tools:z$1.array(z$1.string().max(100)).default([]).meta(Rt),enabled:z$1.boolean().default(false).meta(Rt)}).meta({id:"McpConfig","x-revturbine-schema-persistence":Zi,"x-revturbine-schema-exposure":Yi}),_d=z.merge($).merge(ne).extend({step_key:z$1.string().min(1).max(100).meta(Rt),label:z$1.string().min(1).max(200).meta(Rt),done:z$1.boolean().default(false).meta(Rt),completed_at:qt.meta({...Rt,readOnly:true})}).meta({id:"OnboardingChecklist","x-revturbine-schema-persistence":Zi,"x-revturbine-schema-exposure":Yi}),vS=z$1.enum(["user","agent","system","webhook"]).meta({id:"AuditActorType","x-revturbine-schema-persistence":Zi,"x-revturbine-schema-exposure":Yi}),yS=z.merge(ne).extend({environment_id:z$1.string().min(1).default("production").meta(Rt),actor_type:vS.meta(Rt),actor_id:z$1.string().nullable().default(null).meta(Rt),action:z$1.string().min(1).max(120).meta(Rt),object_type:z$1.string().max(120).nullable().default(null).meta(Rt),object_id:z$1.string().max(200).nullable().default(null).meta(Rt),payload:z$1.record(z$1.string(),z$1.unknown()).nullable().default(null).meta(Rt),occurred_at:z$1.string().datetime().meta({...Rt,readOnly:true})}).meta({id:"AuditEvent","x-revturbine-schema-persistence":Zi,"x-revturbine-schema-exposure":Yi}),xS=z$1.enum(["user_id","account_id","email"]).meta({id:"PlacementTestUserIdentifierType","x-revturbine-schema-persistence":Zi,"x-revturbine-schema-exposure":Yi}),bd=z.merge($).merge(ne).merge(gt).merge(Ct).extend({handle:st.meta({...Rt,readOnly:true}),identifier:z$1.string().min(1).max(200).meta(Rt),identifier_type:xS.default("user_id").meta(Rt),note:z$1.string().max(500).nullable().default(null).meta(Rt),added_by:z$1.string().meta(Rt)}).meta({id:"PlacementTestUser","x-revturbine-schema-persistence":Zi,"x-revturbine-schema-exposure":Yi,...rr()});({"/api/settings/api-keys":{get:b({operationId:"listApiKeys",requestParams:{query:q},summary:"List API keys for the tenant",tags:["settings"],responses:{200:{description:"API keys",content:{"application/json":{schema:B(gd)}}}},"x-revturbine-operation":{exposure:"internal",resource:"api-keys",persistence:{table:"apiKeys",mode:"list"}}}),post:b({operationId:"createApiKey",summary:"Create a new API key",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:Kn(gd)}}},responses:{201:{description:"API key created",content:{"application/json":{schema:gd}}}},"x-revturbine-operation":{exposure:"internal",resource:"api-keys",persistence:{table:"apiKeys",mode:"create",writeSchema:"ApiKeySchema#writable"}}})},"/api/settings/api-keys/{keyId}":{delete:b({operationId:"revokeApiKey",requestParams:{path:z$1.object({keyId:z$1.string()})},summary:"Revoke an API key",tags:["settings"],responses:{200:{description:"API key revoked",content:{"application/json":{schema:gd}}}},"x-revturbine-operation":{exposure:"internal",resource:"api-keys",persistence:{table:"apiKeys",mode:"delete"}}})},"/api/flags":{get:b({operationId:"listFeatureFlags",requestParams:{query:q},summary:"List feature flags for the tenant",tags:["settings"],responses:{200:{description:"Feature flags",content:{"application/json":{schema:B(Pa)}}}},"x-revturbine-operation":{exposure:"internal",resource:"feature-flags",persistence:{table:"featureFlags",mode:"list"}}}),post:b({operationId:"createFeatureFlag",summary:"Create a feature flag",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:Kn(Pa)}}},responses:{201:{description:"Feature flag created",content:{"application/json":{schema:Pa}}}},"x-revturbine-operation":{exposure:"internal",resource:"feature-flags",persistence:{table:"featureFlags",mode:"create",writeSchema:"FeatureFlagSchema#writable"}}})},"/api/flags/{flagId}":{get:b({operationId:"getFeatureFlag",requestParams:{path:z$1.object({flagId:z$1.string()})},summary:"Get a feature flag",tags:["settings"],responses:{200:{description:"Feature flag",content:{"application/json":{schema:Pa}}}},"x-revturbine-operation":{exposure:"internal",resource:"feature-flags",persistence:{table:"featureFlags",mode:"get"}}}),put:b({operationId:"updateFeatureFlag",requestParams:{path:z$1.object({flagId:z$1.string()})},summary:"Update a feature flag",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:qn(Pa).partial()}}},responses:{200:{description:"Feature flag updated",content:{"application/json":{schema:Pa}}}},"x-revturbine-operation":{exposure:"internal",resource:"feature-flags",persistence:{table:"featureFlags",mode:"update",writeSchema:"FeatureFlagSchema#writable"}}}),delete:b({operationId:"deleteFeatureFlag",requestParams:{path:z$1.object({flagId:z$1.string()})},summary:"Delete a feature flag",tags:["settings"],responses:{200:{description:"Feature flag deleted",content:{"application/json":{schema:Pa}}}},"x-revturbine-operation":{exposure:"internal",resource:"feature-flags",persistence:{table:"featureFlags",mode:"delete"}}})},"/api/settings/tenant-config":{put:b({operationId:"updateTenantConfig",summary:"Update tenant configuration",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:qn(rm).partial()}}},responses:{200:{description:"Tenant config updated",content:{"application/json":{schema:rm}}}},"x-revturbine-operation":{exposure:"internal",resource:"tenant-config",persistence:{table:"tenantConfigs",mode:"update",writeSchema:"TenantConfigSchema#writable"}}})},"/api/settings/mcp":{put:b({operationId:"updateMcpConfig",summary:"Update MCP config",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:qn(im).partial()}}},responses:{200:{description:"MCP config updated",content:{"application/json":{schema:im}}}},"x-revturbine-operation":{exposure:"internal",resource:"mcp-config",persistence:{table:"mcpConfigs",mode:"update",writeSchema:"McpConfigSchema#writable"}}})},"/api/settings/onboarding":{get:b({operationId:"listOnboardingSteps",requestParams:{query:q},summary:"List onboarding checklist steps",tags:["settings"],responses:{200:{description:"Onboarding steps",content:{"application/json":{schema:B(_d)}}}},"x-revturbine-operation":{exposure:"internal",resource:"onboarding",persistence:{table:"onboardingChecklist",mode:"list"}}})},"/api/settings/onboarding/{stepId}":{get:b({operationId:"getOnboardingStep",requestParams:{path:z$1.object({stepId:z$1.string()})},summary:"Get an onboarding step",tags:["settings"],responses:{200:{description:"Onboarding step",content:{"application/json":{schema:_d}}}},"x-revturbine-operation":{exposure:"internal",resource:"onboarding",persistence:{table:"onboardingChecklist",mode:"get"}}}),put:b({operationId:"updateOnboardingStep",requestParams:{path:z$1.object({stepId:z$1.string()})},summary:"Update an onboarding step",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:qn(_d).partial()}}},responses:{200:{description:"Onboarding step updated",content:{"application/json":{schema:_d}}}},"x-revturbine-operation":{exposure:"internal",resource:"onboarding",persistence:{table:"onboardingChecklist",mode:"update",writeSchema:"OnboardingChecklistSchema#writable"}}})},"/api/settings/audit-events":{get:b({operationId:"listAuditEvents",requestParams:{query:q},summary:"List audit events for the tenant",tags:["settings"],responses:{200:{description:"Audit events",content:{"application/json":{schema:B(yS)}}}},"x-revturbine-operation":{exposure:"internal",resource:"audit-events",persistence:{table:"auditEvents",mode:"list"}}})},"/api/config/placement-test-users":{get:b({operationId:"listPlacementTestUsers",requestParams:{query:q},summary:"List placement test users for the tenant",tags:["settings"],responses:{200:{description:"Placement test users",content:{"application/json":{schema:B(bd)}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-test-users",persistence:{table:"placementTestUsers",mode:"list"}}}),post:b({operationId:"createPlacementTestUser",summary:"Add a placement test user",tags:["settings"],requestBody:{required:true,content:{"application/json":{schema:Kn(bd)}}},responses:{201:{description:"Placement test user created",content:{"application/json":{schema:bd}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-test-users",persistence:{table:"placementTestUsers",mode:"create",writeSchema:"PlacementTestUserSchema#writable"}}})},"/api/config/placement-test-users/{testUserId}":{delete:b({operationId:"deletePlacementTestUser",requestParams:{path:z$1.object({testUserId:z$1.string()})},summary:"Remove a placement test user",tags:["settings"],responses:{200:{description:"Placement test user removed",content:{"application/json":{schema:bd}}}},"x-revturbine-operation":{exposure:"internal",resource:"placement-test-users",persistence:{table:"placementTestUsers",mode:"delete"}}})}});var {Unrestricted:ce,Pii:Lr}=Me,{Persisted:Xr,Transient:Oh}=et,{Internal:hr}=Ze,SS=z$1.enum(["user","admin"]).meta({id:"UserRole","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});z.merge($).extend({name:Bt.meta(ce),email:z$1.string().email().meta(Lr),email_verified:z$1.boolean().default(false).meta(ce),image:z$1.string().url().nullable().default(null).meta(Lr),role:SS.default("user").meta(ce),banned:z$1.boolean().default(false).meta({...ce,readOnly:true}),ban_reason:z$1.string().nullable().default(null).meta({...ce,readOnly:true}),ban_expires:qt.meta({...ce,readOnly:true}),two_factor_enabled:z$1.boolean().default(false).meta({...ce,readOnly:true})}).meta({id:"AuthUser","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});z.merge($).extend({expires_at:z$1.string().datetime().meta(ce),token:z$1.string().min(1).meta({...Lr,readOnly:true}),ip_address:z$1.string().nullable().default(null).meta(Lr),user_agent:z$1.string().nullable().default(null).meta(Lr),user_id:z$1.string().min(1).meta({...ce,readOnly:true}),active_organization_id:z$1.string().nullable().default(null).meta(ce),impersonated_by:z$1.string().nullable().default(null).meta({...ce,readOnly:true})}).meta({id:"AuthSession","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});z.merge($).extend({account_id:z$1.string().min(1).meta(ce),provider_id:z$1.string().min(1).meta(ce),user_id:z$1.string().min(1).meta({...ce,readOnly:true}),access_token:z$1.string().nullable().default(null).meta({...Lr,readOnly:true}),refresh_token:z$1.string().nullable().default(null).meta({...Lr,readOnly:true}),id_token:z$1.string().nullable().default(null).meta({...Lr,readOnly:true}),access_token_expires_at:qt.meta({...ce,readOnly:true}),refresh_token_expires_at:qt.meta({...ce,readOnly:true}),scope:z$1.string().nullable().default(null).meta(ce),password:z$1.string().nullable().default(null).meta({...Lr,readOnly:true})}).meta({id:"AuthAccount","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});z.merge($).extend({identifier:z$1.string().min(1).meta(Lr),value:z$1.string().min(1).meta({...Lr,readOnly:true}),expires_at:z$1.string().datetime().meta(ce)}).meta({id:"AuthVerification","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});z.extend({secret:z$1.string().min(1).meta({...Lr,readOnly:true}),backup_codes:z$1.string().min(1).meta({...Lr,readOnly:true}),user_id:z$1.string().min(1).meta({...ce,readOnly:true}),verified:z$1.boolean().default(false).meta({...ce,readOnly:true})}).meta({id:"AuthTwoFactor","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});z.extend({name:Bt.meta(ce),slug:z$1.string().min(1).max(100).nullable().default(null).meta(ce),logo:z$1.string().url().nullable().default(null).meta(ce),created_at:z$1.string().datetime().meta({...ce,readOnly:true}),metadata:z$1.string().nullable().default(null).meta(ce)}).meta({id:"AuthOrganization","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});var Ah=z$1.enum(["viewer","collaborator","approver","admin"]).meta({id:"Role","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});var jh=z$1.enum(["tenant","users","plans","entitlements","placements","targeting","content","experiments","billing","audit","mcp","api_tokens","settings"]).meta({id:"PermissionResource","x-revturbine-schema-persistence":Oh,"x-revturbine-schema-exposure":hr}),Fh=z$1.enum(["read","create","update","delete","publish","approve","invite","manage_roles"]).meta({id:"PermissionAction","x-revturbine-schema-persistence":Oh,"x-revturbine-schema-exposure":hr});z$1.object({resource:jh,action:Fh}).meta({id:"Permission","x-revturbine-schema-persistence":Oh,"x-revturbine-schema-exposure":hr});var $2=["tenant","plans","entitlements","placements","targeting","content","experiments","audit","settings"],Z2=["plans","entitlements","placements","targeting","content","experiments"],Y2=["plans","entitlements","placements","targeting","content","experiments"],W2=["tenant","users","plans","entitlements","placements","targeting","content","experiments","billing","audit","mcp","api_tokens","settings"],X2=["read","create","update","delete","publish","approve","invite","manage_roles"];function sm(n,e){return n.flatMap(t=>e.map(r=>({resource:t,action:r})))}var J2=sm($2,["read"]),Q2=[...J2,...sm(Z2,["create","update"])];[...Q2,...sm(Y2,["publish","approve","delete"])];sm(W2,X2);var eF=jh.options.flatMap(n=>Fh.options.map(e=>`${n}:${e}`));z$1.enum(eF).meta({id:"McpTokenScope","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});z.extend({organization_id:z$1.string().min(1).meta({...ce,readOnly:true}),user_id:z$1.string().min(1).meta({...ce,readOnly:true}),role:Ah.default("viewer").meta(ce),created_at:z$1.string().datetime().meta({...ce,readOnly:true})}).meta({id:"AuthMember","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});var IS=z$1.enum(["pending","accepted","rejected","canceled","expired"]).meta({id:"InvitationStatus","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});z.extend({organization_id:z$1.string().min(1).meta({...ce,readOnly:true}),email:z$1.string().email().meta(Lr),role:Ah.nullable().default(null).meta(ce),status:IS.default("pending").meta(ce),expires_at:z$1.string().datetime().meta(ce),created_at:z$1.string().datetime().meta({...ce,readOnly:true}),inviter_id:z$1.string().min(1).meta({...ce,readOnly:true})}).meta({id:"AuthInvitation","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});z.extend({name:z$1.string().max(200).nullable().default(null).meta(ce),public_key:z$1.string().min(1).meta({...Lr,readOnly:true}),user_id:z$1.string().min(1).meta({...ce,readOnly:true}),credential_id:z$1.string().min(1).meta({...ce,readOnly:true}),counter:z$1.number().int().default(0).meta({...ce,readOnly:true}),device_type:z$1.string().min(1).meta(ce),backed_up:z$1.boolean().default(false).meta(ce),transports:z$1.string().nullable().default(null).meta(ce),created_at:z$1.string().datetime().meta({...ce,readOnly:true}),aaguid:z$1.string().nullable().default(null).meta(ce)}).meta({id:"AuthPasskey","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});z.merge($).extend({config_id:z$1.string().min(1).meta(ce),name:z$1.string().max(200).nullable().default(null).meta(ce),start:z$1.string().nullable().default(null).meta(ce),reference_id:z$1.string().min(1).meta(ce),prefix:z$1.string().nullable().default(null).meta(ce),key:z$1.string().min(1).meta({...Lr,readOnly:true}),refill_interval:z$1.number().int().nullable().default(null).meta(ce),refill_amount:z$1.number().int().nullable().default(null).meta(ce),last_refill_at:qt.meta({...ce,readOnly:true}),enabled:z$1.boolean().default(true).meta(ce),rate_limit_enabled:z$1.boolean().default(false).meta(ce),rate_limit_time_window:z$1.number().int().nullable().default(null).meta(ce),rate_limit_max:z$1.number().int().nullable().default(null).meta(ce),request_count:z$1.number().int().default(0).meta({...ce,readOnly:true}),remaining:z$1.number().int().nullable().default(null).meta({...ce,readOnly:true}),last_request:qt.meta({...ce,readOnly:true}),expires_at:qt.meta(ce),permissions:z$1.string().nullable().default(null).meta(ce),metadata:z$1.string().nullable().default(null).meta(ce)}).meta({id:"AuthApiKey","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});z.extend({issuer:z$1.string().min(1).meta(ce),oidc_config:z$1.string().nullable().default(null).meta(ce),saml_config:z$1.string().nullable().default(null).meta(ce),user_id:z$1.string().min(1).meta({...ce,readOnly:true}),provider_id:z$1.string().min(1).meta(ce),organization_id:z$1.string().nullable().default(null).meta(ce),domain:z$1.string().min(1).meta(ce)}).meta({id:"AuthSsoProvider","x-revturbine-schema-persistence":Xr,"x-revturbine-schema-exposure":hr});var TS=z$1.string().regex(/^[a-f0-9]{64}$/,"sha256 must be 64-char lowercase hex"),PS=z$1.string().datetime({offset:true}),lF=z$1.string().min(1).regex(/^[A-Za-z0-9_-]+$/,"must be base64url-encoded without padding"),Lh=z$1.object({url:z$1.string().min(1),sha256:TS,byte_length:z$1.number().int().nonnegative(),brotli_byte_length:z$1.number().int().nonnegative().optional(),gzip_byte_length:z$1.number().int().nonnegative().optional()}).strict(),cF=z$1.object({alg:z$1.literal("ed25519"),key_id:z$1.string().min(1),sig:lF}).strict(),dF=z$1.string().regex(/^\d+\.\d+\.\d+$/,"must be MAJOR.MINOR.PATCH");z$1.object({manifest_version:dF,tenant_id:z$1.string(),config_version:z$1.string(),schema_version:z$1.number().int().nonnegative(),runtime_abi:z$1.number().int().nonnegative(),active:Lh,standby:Lh.optional(),previous:Lh.optional(),not_before:PS,expires_at:PS,rollback_to:TS.optional(),signature:cF.optional()}).strict().refine(n=>Date.parse(n.not_before)<=Date.parse(n.expires_at),{message:"not_before must be <= expires_at",path:["expires_at"]});var am=class{constructor(){k(this,"types",new Map);k(this,"surfaceIndex",new Map);}register(e){let t=this.types.get(e.id);t&&console.warn(`[RevTurbine] Replacing existing placement slot type id ${e.id}.`,{previousSurfaceType:t.surfaceType,nextSurfaceType:e.surfaceType});let r={...e,priority:e.priority??0,accepts:e.accepts??(s=>s.surface.type===e.surfaceType)};this.types.set(r.id,r);let i=this.surfaceIndex.get(r.surfaceType)??[];i.includes(r.id)||(i.push(r.id),this.surfaceIndex.set(r.surfaceType,i));}unregister(e){let t=this.types.get(e);if(!t)return false;this.types.delete(e);let r=this.surfaceIndex.get(t.surfaceType);if(r){let i=r.filter(s=>s!==e);i.length>0?this.surfaceIndex.set(t.surfaceType,i):this.surfaceIndex.delete(t.surfaceType);}return true}get(e){return this.types.get(e)}resolve(e){if(e.surface.template){let i=this.types.get(e.surface.template);if(i)return i}let r=(this.surfaceIndex.get(e.surface.type)??[]).map(i=>this.types.get(i)).filter(i=>i!=null).sort((i,s)=>s.priority-i.priority);for(let i of r)if(i.accepts?.(e))return i;return this.types.get("custom")}listAll(){return Array.from(this.types.values())}listBySurfaceType(e){return (this.surfaceIndex.get(e)??[]).map(r=>this.types.get(r)).filter(Boolean)}has(e){return this.types.has(e)}};function CS(n){}var Uh=class{constructor(){k(this,"resolvers",new Map);}register(e,t){this.resolvers.has(e)&&console.warn(`[RevTurbine] Replacing existing CTA resolver for action type "${e}".`),this.resolvers.set(e,t);}unregister(e){return this.resolvers.delete(e)}get(e){return this.resolvers.get(e)}has(e){return this.resolvers.has(e)}clear(){this.resolvers.clear();}},Vh=null;function kS(){return Vh||(Vh=new Uh),Vh}function RS(n,e=kS()){let t=new Map;for(let[r,i]of Object.entries(n)){if(e.has(r))continue;let s=(a,o)=>{let p=o.placement.cta_path??o.placement.ui_path??{};Promise.resolve().then(()=>i(p)).catch(v=>{console.error(`[RevTurbine] uiPathResolvers.${r} failed:`,v);});};e.register(r,s),t.set(r,s);}return ()=>{for(let[r,i]of t)e.get(r)===i&&e.unregister(r);}}function ES(n,e=kS()){if(e.has("snooze"))return ()=>{};let t=(r,i)=>{let s=i.placement,a=typeof s.remind_later_minutes=="number"?s.remind_later_minutes:void 0;n(i.placement.output_id,a!==void 0?a*60:void 0);};return e.register("snooze",t),()=>{e.get("snooze")===t&&e.unregister("snooze");}}var vd={recommended_plan_handle:"",recommended_plan_name:""};function wS(n){let{strategy:e,planOverride:t,currentPlanHandle:r,plans:i}=n;if(i.length===0)return vd;if(e==="custom"){let o=t??"";if(o===""||o===r)return vd;let p=i.find(v=>v.unique_handle===o);return p?{recommended_plan_handle:p.unique_handle,recommended_plan_name:p.name}:vd}if(r==="")return vd;let s=xm(r,i);if(s===null)return vd;let a=i.find(o=>o.unique_handle===s);return {recommended_plan_handle:s,recommended_plan_name:a?.name??s}}var Bh="0123456789ABCDEFGHJKMNPQRSTVWXYZ",lm=Bh.length,mF=lm-1,pF=10,om=16;function fF(n){let e=n,t="";for(let r=0;r<pF;r+=1){let i=e%lm;t=Bh[i]+t,e=Math.floor(e/lm);}return t}function OS(){let n=new Uint8Array(om);crypto.getRandomValues(n);let e=new Array(om);for(let t=0;t<om;t+=1)e[t]=n[t]%lm;return e}function hF(n){for(let e=n.length-1;e>=0;e-=1){if(n[e]<mF)return n[e]+=1,true;n[e]=0;}return false}function AS(){let n=-1,e=[];return {next(t=Date.now()){t<=n&&e.length===om?hF(e)||(n+=1,e=OS()):(n=t,e=OS());let r=fF(n);for(let i=0;i<e.length;i+=1)r+=Bh[e[i]];return r}}}var qh=AS();var gF=new Set([408,429,500,502,503,504]);function _F(n){return new Promise(e=>setTimeout(e,n))}async function Dh(n,e={}){let t=e.retries??2,r=e.baseDelayMs??200,i=e.sleep??_F,s;for(let a=0;a<=t;a+=1){try{let o=await n();if(o.ok)return {delivered:!0,status:o.status,attempts:a+1};if(!gF.has(o.status))return {delivered:!1,status:o.status,attempts:a+1};s=new Error(`ingest_status_${o.status}`);}catch(o){s=o instanceof Error?o:new Error(String(o));}a<t&&await i(r*(a+1));}return {delivered:false,error:s,attempts:t+1}}function Mh(){return {created:0,dropped:0,redacted:0,sampled:0,deduped:0,queued:0,sent:0,failed:0}}var zh=["account_id","email","plan","plan_handle","usage","entitlements","custom","personalization"],bF=new Set(zh),vF=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,yF=$o();function Nh(n){yF&&console.warn(n);}var DS=new Set(ju.options),MS=["usage","account_id","email","email_type","plan","trial","payment_failed","payment_at_risk","tiers","entitlements","instances","custom","personalization","derived_config_version","context_hash","derived_computed_at"],LS=new Set(MS);function VS(n,e){if(!n)return {};let t={};for(let[r,i]of Object.entries(n)){let s=String(r||"").trim();if(!s)throw new Error(`[RevTurbine] ${e} contains an empty action_type key.`);if(typeof i!="function")throw new Error(`[RevTurbine] ${e} contains a non-function resolver for action_type '${s}'.`);t[s]=i;}return t}var cm={Server:"revturbine_server",LocalOnly:"local_only"};function Xh(n){return n?.playbook??n?.exportedConfig}function Ta(n,e,t){return {header:n,body:e,cta_label:t,title:n,cta:t}}var US="revturbine:sdk-route-change",mm="sdk_validation_warning",xF="revturbine:decision-cache",SF="revturbine:interaction-state",IF="revturbine:presentation-caps",PF="/api/track",TF="/api/sdk/meta",CF="/api/events/interactions",kF="/api/placements/interactions",RF="revturbine-web-sdk",Kh="user_context_observed",EF=20,wF=5e3;function NS(n,e){let t=n[e];if(typeof t=="string"&&t.trim().length>0)return t;let r=HS(n);if(r){let i=r[e];if(typeof i=="string"&&i.trim().length>0)return i}return null}function HS(n){return Se(n.payload)?n.payload:null}var OF=["surface_slot_id","placement_id","payload_id","experiment_id","variant_key"];function AF(n){let e={};for(let t of OF)e[t]=NS(n,t);return e}var jF=["placement_","gate_","slot_","engagement_"],FF=new Set(["impression","segment_enrolled","segment_unenrolled",Kh]);function LF(n){let e=Bl(n);return e===mm?"derived":FF.has(e)||jF.some(t=>e.startsWith(t))?"automatic":"explicit"}var VF=["decision_id"];function UF(n){let e={};for(let t of VF)e[t]=NS(n,t);return e}function BF(n){return _m(n,Jh(8))}async function BS(n){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n));return Ad(new Uint8Array(e))}function Jh(n){let e=Math.ceil(n/2),t=new Uint8Array(e);crypto.getRandomValues(t);let r="";for(let i=0;i<t.length;i+=1){let s=t[i].toString(16).padStart(2,"0");r+=s;}return r.slice(0,n)}function gr(){return typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Jh(16)}`}function dm(){return hc()?{}:{url:window.location.href,title:document.title,referrer:document.referrer||void 0}}function qS(){return {id:void 0,custom:{},entitlements:{},usage:{},personalization:{}}}function qF(n,e){let t={};for(let[r,i]of Object.entries(e))(typeof i=="string"||typeof i=="number"||typeof i=="boolean")&&(t[r]=i);return Km(n,t)}function DF(n,e,t){if(n.length===0)return true;let r=new Map;for(let i of n){let s=t.get(i)??"__no_dim__",a=r.get(s)??[];a.push(i),r.set(s,a);}for(let i of r.values())if(!i.some(s=>e.has(s)))return false;return true}var Gh=class{constructor(e){k(this,"exportedConfig");this.exportedConfig=e;}getExportedConfig(){return this.exportedConfig}},pm=class pm{constructor(e,t,r,i){k(this,"endpoint",e);k(this,"tenantId",t);k(this,"token",r);k(this,"legacyTargetDefaults",i);k(this,"cached");k(this,"etag");k(this,"lastFetchedAt",0);}getExportedConfig(){return this.cached}async refresh(){let e=Date.now();if(this.cached&&e-this.lastFetchedAt<pm.REFRESH_TTL_MS)return this.cached;try{let t=await fetch(`${this.endpoint}/api/sdk/config`,{method:"GET",headers:{accept:"application/octet-stream, application/json",authorization:`Bearer ${this.token}`,"x-tenant-id":this.tenantId,...this.etag?{"if-none-match":this.etag}:{}}});if(this.lastFetchedAt=e,t.status===304||!t.ok)return this.cached;let i=(t.headers.get("content-type")??"").includes("application/octet-stream")?new wp(new Uint8Array(await t.arrayBuffer())).toPlaybook():await t.json(),s=Ls(i,"GET /api/sdk/config",this.legacyTargetDefaults);return s&&(this.cached=s,this.etag=t.headers.get("etag")??void 0),this.cached}catch{return this.cached}}};k(pm,"REFRESH_TTL_MS",6e4);var $h=pm,Zh=class{constructor(e,t,r){k(this,"cached");k(this,"resolver");k(this,"legacyTargetDefaults");this.resolver=e,this.cached=r,this.legacyTargetDefaults=t;}getExportedConfig(){return this.cached}async refresh(){let e=Ls(await this.resolver(),"localRuntime.resolvers.resolveExportedConfig()",this.legacyTargetDefaults);return e&&(this.cached=e),this.cached}},Yh=class{constructor(e,t){k(this,"source");k(this,"legacyTargetDefaults");this.source=e,this.legacyTargetDefaults=t;}getExportedConfig(){return Ls(this.source.getExportedConfig(),"configProvider.getExportedConfig()",this.legacyTargetDefaults)}async refresh(){let e=await this.source.refresh?.();return Ls(e??this.source.getExportedConfig(),"configProvider.refresh()",this.legacyTargetDefaults)}},yd=class yd{constructor(e){k(this,"tenantId");k(this,"apiKey");k(this,"ingestPublicKey");k(this,"environmentId");k(this,"testTraffic");k(this,"analyticsEnabled");k(this,"anonymousTelemetryEnabled");k(this,"previewMode");k(this,"telemetryConsent");k(this,"telemetryCounters",Mh());k(this,"maxBatchSize");k(this,"flushIntervalMs");k(this,"flushTimer");k(this,"batchingTeardown",[]);k(this,"anonTelemetryNoticeShown",false);k(this,"piiRedactionWarned",false);k(this,"endpoint");k(this,"runtimeMode");k(this,"endpointOverrides");k(this,"localRuntime");k(this,"localStorageKey");k(this,"mode");k(this,"policy");k(this,"extensionEnabled");k(this,"placementBehaviorOverrides");k(this,"derivedPlacementBehaviorMemo",null);k(this,"providerFailureSlotBehavior");k(this,"uiPathResolvers");k(this,"unbridgeUiPathCtaResolvers",()=>{});k(this,"unregisterBuiltinSnoozeResolver",()=>{});k(this,"persistentStore");k(this,"sessionStore");k(this,"anonymousId");k(this,"sessionId");k(this,"decisionCache",new Map);k(this,"interactionState",new Map);k(this,"interactionQueue",[]);k(this,"defaultDecisionTtlMs",6e4);k(this,"defaultDismissCooldownMs",1440*60*1e3);k(this,"dismissCooldownDefaultMs",10080*60*1e3);k(this,"defaultRemindLaterMs",3600*1e3);k(this,"defaultUsageWarningPercent",80);k(this,"defaultTrialExpiringDays",3);k(this,"events",[]);k(this,"placements",new Map);k(this,"syncedSurfaceSlotIds",new Set);k(this,"userContext");k(this,"pageContext");k(this,"clientContextToken");k(this,"serverUserContextProvider");k(this,"lastServerContextHash");k(this,"usageBalances",{});k(this,"localDecisionsByPlacementId",new Map);k(this,"localPlacementsByLookupKey",new Map);k(this,"localEntitlementsByHandle",new Map);k(this,"localUserContextsByUserId",new Map);k(this,"localTrialStatus",{in_trial:false});k(this,"presentationCapsByKey",new Map);k(this,"usageLimitByEntitlement",new Map);k(this,"usageTokenPrefixByEntitlement",new Map);k(this,"segmentIdsByPredicateField",new Map);k(this,"configuredSegmentsById",new Map);k(this,"dirtySegmentIds",new Set);k(this,"segmentMembershipBySegmentId",new Map);k(this,"segmentMembershipUserId");k(this,"lastTrialTriggerStage","none");k(this,"configProvider");k(this,"branding");k(this,"apiBranding");k(this,"cachedPlacementResolver");k(this,"cachedPlacementResolverConfig");k(this,"sdkDisabledByProviderFailure",false);k(this,"sdkDisabledReason");k(this,"providerRegistry");k(this,"placementTypeRegistry");k(this,"impressionHistory");k(this,"emittedResolutionDiagnostics",new Set);k(this,"emittedSdkErrors",new Set);if(this.tenantId=e.tenantId,this.apiKey=e.apiKey,this.ingestPublicKey=e.ingestPublicKey,this.environmentId=e.environmentId?.trim()||"default",this.testTraffic=e.test===true,this.analyticsEnabled=e.analytics!==false,this.anonymousTelemetryEnabled=e.anonymousTelemetry!==false,this.previewMode=e.previewMode===true,this.telemetryConsent=e.telemetry?.consent??"granted",this.maxBatchSize=Math.max(1,e.eventBatching?.maxBatchSize??EF),this.flushIntervalMs=Math.max(0,e.eventBatching?.flushIntervalMs??wF),this.endpoint=e.endpoint.replace(/\/$/,""),this.runtimeMode=e.runtimeMode??cm.Server,this.endpointOverrides=e.endpointOverrides??{},this.localRuntime=e.localRuntime,this.branding=e.branding,this.apiBranding=e.apiBranding,this.configProvider=this.resolveConfigProvider(e),this.localStorageKey=e.localRuntime?.storageKey??`revturbine:${this.tenantId}:local-runtime`,this.mode=e.mode,this.policy={inferUser:e.contextPolicy?.inferUser??true,inferPage:e.contextPolicy?.inferPage??true,routerAutoTrack:e.contextPolicy?.routerAutoTrack??true},this.extensionEnabled=!!e.extension?.enabled,this.placementBehaviorOverrides={...e.placementBehavior},this.providerFailureSlotBehavior=e.providerFailureSlotBehavior??"invisible",this.uiPathResolvers=VS(e.uiPathResolvers,"RevTurbineInitOptions.uiPathResolvers"),this.persistentStore=Xp(e.persistentStorage),this.sessionStore=Kb(e.sessionStorage),this.userContext={usage:{},...this.policy.inferUser?qS():{},...e.user||{}},this.pageContext={...this.policy.inferPage?dm():{},...e.page||{},tags:Ul(e.page?.tags)},this.anonymousId=this.resolveAnonymousId(),this.sessionId=gr(),this.providerRegistry=new uu,this.placementTypeRegistry=new am,this.impressionHistory=new Fp({store:new M_({storage:this.persistentStore,tenantId:this.tenantId}),userId:this.userContext.id??this.anonymousId}),CS(this.placementTypeRegistry),e.domainProviders)for(let t of e.domainProviders)this.providerRegistry.register(t);this.warnOnUiPathResolverCoverageGaps(),this.unbridgeUiPathCtaResolvers=RS(this.uiPathResolvers),this.unregisterBuiltinSnoozeResolver=ES((t,r)=>{this.snooze(t,r);}),this.hydrateDecisionCache(),this.hydrateInteractionState(),this.hydratePresentationCaps(),this.hydrateLocalRuntimeState(),this.impressionHistory.hydrate(),this.rebuildSegmentPredicateFieldIndex(),this.refreshExportedConfigSnapshot(),this.recalculateDerivedUsageTraits(),Mr()&&this.policy.routerAutoTrack&&this.installRouteTracking(),Mr()&&this.extensionEnabled&&this.installBridge(),this.capture("page_view",{mode:this.mode,runtime_mode:this.runtimeMode,source:"sdk_init",placement_behavior_flags:this.placementBehavior}),this.startEventBatchFlushing(),this.emitSdkInitTelemetry();}isLocalOnlyMode(){return this.runtimeMode===cm.LocalOnly}resolveConfigProvider(e){let t={tenantId:e.tenantId,environmentId:e.environmentId??"default"};if(e.configProvider)return new Yh(e.configProvider,t);let r=Ls(Xh(e.localRuntime),"localRuntime.playbook",t),i=e.localRuntime?.resolvers?.resolveExportedConfig;if(i)return new Zh(i,t,r);if(r)return new Gh(r);let s=e.runtimeMode??cm.Server,a=e.ingestPublicKey??e.apiKey;if(s!==cm.LocalOnly&&e.endpoint&&a)return new $h(e.endpoint,e.tenantId,a,t)}async refreshExportedConfigSnapshot(){try{await this.configProvider?.refresh?.(),this.rebuildSegmentPredicateFieldIndex();}catch{}}getConfiguredExportedConfig(){return this.configProvider?.getExportedConfig()}get placementBehavior(){let e=this.derivePlacementBehaviorFromPlaybook();return {enableClientCapsEnforcement:this.placementBehaviorOverrides.enableClientCapsEnforcement??e.enableClientCapsEnforcement,enableAutoGatedPlacement:this.placementBehaviorOverrides.enableAutoGatedPlacement??e.enableAutoGatedPlacement,enableTrialAutoTriggers:this.placementBehaviorOverrides.enableTrialAutoTriggers??e.enableTrialAutoTriggers}}derivePlacementBehaviorFromPlaybook(){let e=this.getConfiguredExportedConfig();if(this.derivedPlacementBehaviorMemo&&this.derivedPlacementBehaviorMemo.config===e)return this.derivedPlacementBehaviorMemo.flags;let t=e?.placements??[],s={enableClientCapsEnforcement:[...t.flatMap(a=>a.payloads??[]),...e?.placement_payloads??[]].some(a=>a.caps?.max_per_period!==void 0||a.caps?.cooldown_days!==void 0||a.remind_later_minutes!==void 0&&a.remind_later_minutes!==null),enableAutoGatedPlacement:t.some(a=>a.category==="gated"),enableTrialAutoTriggers:t.some(a=>a.category==="trials")};return this.derivedPlacementBehaviorMemo={config:e,flags:s},s}rebuildSegmentPredicateFieldIndex(){this.segmentIdsByPredicateField.clear(),this.configuredSegmentsById.clear();let t=this.getConfiguredExportedConfig()?.segments??[];for(let r of t)if(this.configuredSegmentsById.set(r.handle,r),!(!r.predicates||r.predicates.length===0))for(let i of r.predicates){let s=String(i.field||"").trim();if(!s)continue;let a=this.segmentIdsByPredicateField.get(s)??new Set;a.add(r.handle),this.segmentIdsByPredicateField.set(s,a);}this.markAllSegmentsDirty();}getOrBuildPlacementResolver(){if(this.localRuntime?.resolvers?.getPlacementDecision)return this.localRuntime.resolvers.getPlacementDecision;let e=this.getConfiguredExportedConfig();if(!e)return;if(this.cachedPlacementResolver&&this.cachedPlacementResolverConfig===e)return this.cachedPlacementResolver;let t=this.localRuntime?.placements??(Array.isArray(e.placements)?{placements:e.placements}:void 0);if(t)return this.cachedPlacementResolver=pc({placements:t,exportedConfig:e,impressionHistory:this.impressionHistory}),this.cachedPlacementResolverConfig=e,this.cachedPlacementResolver}synthesizeProviderContext(){let e=this.userContext.plan,t=this.userContext.usage,r=this.localTrialStatus,i=this.userContext.payment_failed,s=this.userContext.payment_at_risk,a=this.userContext.tiers,o=a!==void 0&&Object.keys(a).length>0,p=this.userContext.experiments,v=p!==void 0&&Object.keys(p).length>0;if(!e&&!t&&!o&&!v)return;let l={};if(t&&typeof t=="object"){let I=Ts(t);for(let[C,S]of Object.entries(t)){if(!S||typeof S!="object")continue;let V=typeof S.amount=="number"?S.amount:I[C]??0,G=typeof S.limit=="number"?S.limit:0,re=G>0?Math.max(0,G-V):0;l[C]={used:V,limit:G,remaining:re,unit:typeof S.unit=="string"?S.unit:void 0,reset_date:typeof S.reset_date=="string"?S.reset_date:void 0};}}let x={...r.in_trial!==void 0?{trialActive:r.in_trial}:{},...r.trial_limit_type!==void 0?{trialLimitType:r.trial_limit_type}:{},...r.progress_percent!==void 0?{trialProgressPercent:r.progress_percent}:{},...r.days_remaining!==void 0?{trialDaysRemaining:r.days_remaining}:{},...r.day_number!==void 0&&r.days_remaining!==void 0?{trialDaysTotal:r.day_number+r.days_remaining}:{},...r.state!==void 0?{trialState:r.state}:{},...r.usage_entitlement_handle!==void 0?{trialUsageEntitlementHandle:r.usage_entitlement_handle}:{},...r.usage_consumed!==void 0?{trialUsageConsumed:r.usage_consumed}:{},...r.usage_limit!==void 0?{trialUsageLimit:r.usage_limit}:{}};return {...e?{plan:{currentPlanHandle:e.id??e.name??"",currentPlanName:e.name,...x,...i!==void 0?{paymentFailed:i}:{},...s!==void 0?{paymentAtRisk:s}:{}}}:{},...Object.keys(l).length>0||o?{entitlements:{entries:{},usage:l,...o?{tiers:a}:{}}}:{},...v?{experiments:{assignments:p}}:{}}}markAllSegmentsDirty(){this.dirtySegmentIds.clear();for(let e of this.configuredSegmentsById.keys())this.dirtySegmentIds.add(e);this.segmentMembershipBySegmentId.clear();}markSegmentsDirtyForFields(e){for(let t of e){let r=this.segmentIdsByPredicateField.get(t);if(r)for(let i of r)this.dirtySegmentIds.add(i);}}toSegmentEvaluationTraits(e,t,r){return Ld(e,t,r)}buildTargetingState(e){return Vd(e,this.getConfiguredExportedConfig(),this.usageBalances)}markSegmentsDirtyFromContextChange(e,t){if(this.configuredSegmentsById.size===0)return;let r=e.id||this.anonymousId,i=t.id||this.anonymousId;if(r!==i){this.segmentMembershipUserId=i,this.markAllSegmentsDirty();return}let s=this.buildTargetingState(e),a=this.buildTargetingState(t),o=new Set,p=new Set([...Object.keys(s.segmentTraits),...Object.keys(a.segmentTraits)]);for(let v of p)s.segmentTraits[v]!==a.segmentTraits[v]&&o.add(v);this.markSegmentsDirtyForFields(o);}currentPathname(){if(this.pageContext.url)try{return new URL(this.pageContext.url).pathname}catch{}return Mr()?window.location.pathname:"/"}disableForProviderFailure(e){this.sdkDisabledByProviderFailure||(this.sdkDisabledByProviderFailure=true,this.sdkDisabledReason=e,this.decisionCache.clear(),this.persistDecisionCache(),console.warn(`[RevTurbine] SDK disabled after provider fallback chain failed: ${e}`));}isDisabledByProviderFailure(){return this.sdkDisabledByProviderFailure}disabledDecisionForPlacement(e,t){let r=this.providerFailureSlotBehavior==="placeholder",i=r?`${t??e} temporarily unavailable`:`${t??e} unavailable`,s=r?"This placement is in safe fallback mode because all configured providers failed.":"This placement is currently hidden because provider fallback resolution failed.";return this.emitResolutionFailure({reason:"sdk_disabled_provider_failure",placement_handle:e}),{placementId:e,requestId:gr(),visible:r,decisionSource:"fallback",reasonCodes:["sdk_disabled_provider_failure"],suppressionReason:r?void 0:"sdk_disabled_provider_failure",content:Ta(i,s,r?"Retry later":"Continue")}}disabledPlacementOutputForConfig(e){if(this.providerFailureSlotBehavior!=="placeholder")return null;let t=`disabled_output_${gr()}`,r=e.slotId?`${e.slotId} temporarily unavailable`:"Placement temporarily unavailable";return {output_id:t,category:"fallback",surface:{type:e.surfaceType??"banner",slot_id:e.slotId},content:{title:r,header:r,body:"This placement is in safe fallback mode because all configured providers failed.",cta_label:"Retry later"},rule_id:"sdk_disabled_provider_failure",decision_id:t,config_version:"sdk-fallback",present_upsell:false}}endpointFor(e,t){let r=this.endpointOverrides[e];return r&&r.trim().length>0?/^https?:\/\//i.test(r)?r:`${this.endpoint}${r.startsWith("/")?"":"/"}${r}`:`${this.endpoint}${t}`}localPlacementLookupKey(e){return Fm(e)}localLookupMatchesConfig(e,t){if(t.slotId&&e.slotId&&e.slotId!==t.slotId||t.surfaceType&&e.surfaceType&&e.surfaceType!==t.surfaceType)return false;let r=(i,s)=>!i||!s?true:i===s;return r(t.entitlementHandle,e.entitlementHandle)&&r(t.planHandle,e.planHandle)&&r(t.placementHandle,e.placementHandle)}localOutputMatchesConfig(e,t){return ym(e,t.planHandle)}applyCategoryConflictSuppression(e){return jd(e)}resolveLocalPlacementFromCandidates(e,t){return Vm(e,true,{fixedOnly:t?.fixedOnly??false})}localPlacementForConfig(e){let t=this.localPlacementsByLookupKey.get(this.localPlacementLookupKey(e));if(t&&!this.localOutputMatchesConfig(t,e))return null;let r=[];for(let[i,s]of this.localPlacementsByLookupKey.entries()){if(!s)continue;let a=vm(i);this.localLookupMatchesConfig(a,e)&&this.localOutputMatchesConfig(s,e)&&r.push(s);}return t&&!r.some(i=>i.output_id===t.output_id)&&r.push(t),this.resolveLocalPlacementFromCandidates(r,e)}hydrateLocalRuntimeState(){if(!this.isLocalOnlyMode())return;let e=this.localRuntime?.initialData;if(e?.placementDecisionsByPlacementId)for(let[r,i]of Object.entries(e.placementDecisionsByPlacementId))this.localDecisionsByPlacementId.set(r,i);if(e?.placementsByLookupKey)for(let[r,i]of Object.entries(e.placementsByLookupKey))this.localPlacementsByLookupKey.set(r,i);if(e?.entitlementByHandle)for(let[r,i]of Object.entries(e.entitlementByHandle))this.localEntitlementsByHandle.set(r,i);if(e?.userContextByUserId)for(let[r,i]of Object.entries(e.userContextByUserId))this.localUserContextsByUserId.set(r,i);e?.trialStatus&&(this.localTrialStatus=e.trialStatus);let t=this.persistentStore.getItem(this.localStorageKey);if(!t){this.persistLocalRuntimeState();return}try{let r=JSON.parse(t);r.userContext&&(this.userContext=this.mergeUserContext(r.userContext)),r.pageContext&&(this.pageContext=this.mergePageContext(r.pageContext)),r.usageBalances&&(this.usageBalances={...this.usageBalances,...r.usageBalances});for(let i of r.placements||[])this.placements.set(i.id,i);for(let[i,s]of Object.entries(r.decisions||{}))this.localDecisionsByPlacementId.set(i,s);for(let[i,s]of Object.entries(r.placementLookup||{}))this.localPlacementsByLookupKey.set(i,s);for(let[i,s]of Object.entries(r.entitlements||{}))this.localEntitlementsByHandle.set(i,s);for(let[i,s]of Object.entries(r.userContexts||{}))this.localUserContextsByUserId.set(i,s);r.trialStatus&&(this.localTrialStatus=r.trialStatus);}catch{this.persistentStore.removeItem(this.localStorageKey),this.persistLocalRuntimeState();}}persistLocalRuntimeState(){if(this.isLocalOnlyMode())try{let e={userContext:this.userContext,pageContext:this.pageContext,usageBalances:this.usageBalances,placements:Array.from(this.placements.values()),decisions:Object.fromEntries(this.localDecisionsByPlacementId.entries()),placementLookup:Object.fromEntries(this.localPlacementsByLookupKey.entries()),entitlements:Object.fromEntries(this.localEntitlementsByHandle.entries()),userContexts:Object.fromEntries(this.localUserContextsByUserId.entries()),trialStatus:this.localTrialStatus};this.persistentStore.setItem(this.localStorageKey,JSON.stringify(e));}catch{}}decisionCacheStorageKey(){return `${xF}:${this.tenantId}:${this.anonymousId}`}interactionStateStorageKey(){return `${SF}:${this.tenantId}:${this.anonymousId}`}presentationCapsStorageKey(){return `${IF}:${this.tenantId}:${this.anonymousId}`}hydrateDecisionCache(){let e=this.sessionStore.getItem(this.decisionCacheStorageKey());if(e)try{let t=JSON.parse(e),r=Date.now();Object.entries(t).forEach(([i,s])=>{!s||typeof s!="object"||!Number.isFinite(s.expiresAt)||s.expiresAt<=r||this.decisionCache.set(i,s);});}catch{this.sessionStore.removeItem(this.decisionCacheStorageKey());}}persistDecisionCache(){let e=Date.now(),t=Object.fromEntries(Array.from(this.decisionCache.entries()).filter(([,r])=>r.expiresAt>e));try{this.sessionStore.setItem(this.decisionCacheStorageKey(),JSON.stringify(t));}catch{}}hydrateInteractionState(){let e=this.persistentStore.getItem(this.interactionStateStorageKey());if(e)try{let t=JSON.parse(e);Object.entries(t).forEach(([r,i])=>{!i||typeof i!="object"||this.interactionState.set(r,i);});}catch{this.persistentStore.removeItem(this.interactionStateStorageKey());}}persistInteractionState(){let e=Object.fromEntries(this.interactionState.entries());try{this.persistentStore.setItem(this.interactionStateStorageKey(),JSON.stringify(e));}catch{}}hydratePresentationCaps(){let e=this.persistentStore.getItem(this.presentationCapsStorageKey());if(e)try{let t=JSON.parse(e);for(let[r,i]of Object.entries(t)){if(!i||typeof i!="object")continue;let s=Array.isArray(i.seenAt)?i.seenAt.filter(o=>Number.isFinite(o)&&o>0):[],a=Number.isFinite(i.cooldownUntil)?i.cooldownUntil:void 0;this.presentationCapsByKey.set(r,{seenAt:s,cooldownUntil:a});}}catch{this.persistentStore.removeItem(this.presentationCapsStorageKey());}}persistPresentationCaps(){try{let e=Object.fromEntries(this.presentationCapsByKey.entries());this.persistentStore.setItem(this.presentationCapsStorageKey(),JSON.stringify(e));}catch{}}resolveContextPlanRaw(){let e=this.userContext.plan;if(Se(e)&&typeof e.id=="string"&&e.id)return e.id;let t=this.userContext.custom;return typeof t?.plan=="string"&&t.plan?t.plan:typeof t?.plan_handle=="string"&&t.plan_handle?t.plan_handle:""}activePlanIdentifiers(e){let t=this.resolveContextPlanRaw(),r=String(t||"").toLowerCase(),i=new Set;if(!r)return i;i.add(r);for(let s of e.plans??[]){let a=typeof s.unique_handle=="string"?s.unique_handle.toLowerCase():"";a===r&&i.add(a);}return i}ruleTargetsActivePlan(e,t){let i=(Array.isArray(e.targets)?e.targets:[]).filter(s=>Se(s)&&s.kind==="plan");return i.length===0?true:i.some(s=>typeof s.id=="string"&&t.has(s.id.toLowerCase()))}hydrateUsageLimitRulesFromExportedConfig(){let e=this.getConfiguredExportedConfig();if(!e)return;this.usageLimitByEntitlement.clear();let t=this.activePlanIdentifiers(e),r=new Map,i=e.entitlements??[];for(let a of i){let o=typeof a.unique_handle=="string"?a.unique_handle:"";o&&r.set(o,o);}let s=e.entitlement_rules??[];for(let a of s){if(!Se(a))continue;let o=typeof a.entitlement_id=="string"?a.entitlement_id:"";if(!o)continue;let p=typeof a.kind=="string"?a.kind:"";if(!(p==="usage_limit"||p==="credits"||p==="seat"))continue;let l=r.get(o)??"",x=typeof a.unit=="string"?a.unit:"",I=Sm(x),C=I&&!Im(I)?I:io(l||o);C&&(this.usageTokenPrefixByEntitlement.set(o,C),l&&this.usageTokenPrefixByEntitlement.set(l,C));let S=Number(a.limit_value??a.allowance_value);if(!Number.isFinite(S)||S<=0||!this.ruleTargetsActivePlan(a,t))continue;let V=this.defaultUsageWarningPercent;this.usageLimitByEntitlement.set(o,{limit:S,warningPercent:V}),l&&this.usageLimitByEntitlement.set(l,{limit:S,warningPercent:V});}}recalculateDerivedUsageTraits(){let e=this.getConfiguredExportedConfig();this.hydrateUsageLimitRulesFromExportedConfig();let t=Mm({context:this.userContext,exportedConfig:e,usageBalances:this.usageBalances,usageTokenPrefixByEntitlement:this.usageTokenPrefixByEntitlement,usageThresholdLookup:i=>this.usageThresholdForEntitlement(i)}),r=this.deriveRecommendedPlanTokens(e);this.userContext={...this.userContext,personalization:{...t,...r}};}deriveRecommendedPlanTokens(e,t){let r={recommended_plan_handle:"",recommended_plan_name:""};if(!e?.plans?.length)return r;let i=this.resolveContextPlanRaw(),s=String(i||"").toLowerCase(),a=e.plans.map(o=>({source_id:o.unique_handle,unique_handle:o.unique_handle,name:o.name,tier_position:o.tier_position??0,sort_order:o.sort_order??0}));return wS({strategy:t?.strategy??"next_tier_up",planOverride:t?.planOverride,currentPlanHandle:s,plans:a})}getPersonalizationTokens(e){let t={},r=this.userContext.personalization??{};for(let[i,s]of Object.entries(r))i!=="user_id"&&(typeof s=="string"||typeof s=="number")&&(t[i]=s);if(t.plan_name===void 0){let i=Ca(this.getConfiguredExportedConfig(),this.userContext.plan);i?t.plan_name=i:typeof this.userContext.plan=="object"&&this.userContext.plan?.name&&(t.plan_name=this.userContext.plan.name);}if(e?.recommendation_strategy){let i=this.deriveRecommendedPlanTokens(this.getConfiguredExportedConfig(),{strategy:e.recommendation_strategy,planOverride:e.recommendation_plan_override??void 0});t.recommended_plan_handle=i.recommended_plan_handle,t.recommended_plan_name=i.recommended_plan_name;}return t}getEntitlements(){return Object.fromEntries(this.localEntitlementsByHandle.entries())}getUsage(){let e={...Ts(this.userContext.usage),...this.usageBalances},t={};for(let[r,i]of Object.entries(e)){if(!Number.isFinite(i))continue;let s=this.usageTokenPrefixByEntitlement.get(r)??io(r)??r,a=this.usageThresholdForEntitlement(r);t[s]={current:i,...a?.limit!==void 0?{limit:a.limit}:{}};}return t}getPolicy(){let e=this.getConfiguredExportedConfig();return {contextPolicy:this.policy,placementBehavior:this.placementBehavior,runtimeMode:this.runtimeMode,...typeof e?.format_version=="string"?{exportedConfigVersion:e.format_version}:{}}}getBranding(){return Mb({explicit:this.branding,legacyConfigTheme:this.getConfiguredExportedConfig()?.theme,apiBranding:this.apiBranding})}setApiBranding(e){this.apiBranding=e;}deriveLocalEntitlementFromConfiguredRules(e,t){let r=this.getConfiguredExportedConfig();if(!r)return null;let i=this.resolveContextPlanRaw(),s=String(i||"").toLowerCase(),a=this.getTargeting(),o=new Set(a.segmentIds??[]),{trialGrantedEntitlementHandles:p,effectivePlanHandle:v}=this.resolveReverseTrialGrants(r);return Nl({handle:e,context:t,currentPlanHandle:s,segmentIds:o,usageBalances:this.usageBalances,userUsage:this.userContext.usage,exportedConfig:r,...p!==void 0?{trialGrantedEntitlementHandles:p}:{},...v!==void 0?{effectivePlanHandle:v}:{}})}resolveReverseTrialGrants(e){let t=this.localTrialStatus;if(!t.in_trial||t.trial_type!=="reverse")return {};let r=t.plan_handle;if(!r)return {};let s=(e.reverse_trial_rules??[]).find(a=>a.fallback_plan_id===r&&a.is_active!==false);return !s||s.entitlements_during_trial.length===0?{}:{trialGrantedEntitlementHandles:new Set(s.entitlements_during_trial),effectivePlanHandle:s.premium_plan_id}}getTargeting(){let e=this.userContext.id||this.anonymousId,t=this.localUserContextsByUserId.get(e),r=this.getConfiguredExportedConfig(),i=Ca(r,this.userContext.plan),s=i??t?.plan??(this.resolveContextPlanRaw()||void 0),a=[...r?.segments??[]],o=Array.from(new Set(a.flatMap(I=>(I.predicates??[]).map(C=>C.field)))).sort((I,C)=>I.localeCompare(C)),p={...t?.traits??{},...this.userContext.custom??{}};for(let[I,C]of Object.entries(this.userContext.entitlements??{}))p[I]===void 0&&(p[I]=C);i&&p.plan_name===void 0&&(p.plan_name=i),s&&p.plan===void 0&&(p.plan=s);let v={...t?.usage??{},...Ts(this.userContext.usage),...this.usageBalances};for(let[I,C]of Object.entries(v))p[I]===void 0&&(p[I]=C);let l={};for(let[I,C]of Object.entries(p))(typeof C=="string"||typeof C=="number"||typeof C=="boolean")&&(l[I]=C);if(this.segmentMembershipUserId!==e&&(this.segmentMembershipUserId=e,this.markAllSegmentsDirty()),a.length>0&&this.segmentIdsByPredicateField.size===0&&this.rebuildSegmentPredicateFieldIndex(),a.length>0&&this.dirtySegmentIds.size>0){for(let I of this.dirtySegmentIds){let C=this.configuredSegmentsById.get(I)??a.find(V=>V.handle===I);if(!C){this.segmentMembershipBySegmentId.delete(I);continue}let S=$l([C],l).length>0;this.segmentMembershipBySegmentId.set(I,S);}this.dirtySegmentIds.clear();}let x=a.length>0?a.filter(I=>this.segmentMembershipBySegmentId.get(I.handle)===true).map(I=>I.handle):[...t?.segmentIds??[]];return {userId:e,segmentIds:x,traits:p,...s?{plan:s}:{},...Object.keys(v).length>0?{usage:v}:{},configuredSegments:a,configuredTraitFields:o}}async explainPlacementDecision(e){let t=await this.getPlacementDecision(e),r=this.getTargeting(),i=this.getEntitlements(),s=this.getPolicy(),a=this.getConfiguredExportedConfig(),o=new Set(r.segmentIds),p=r.configuredSegments.map(J=>{let Dt=Array.isArray(J.predicates)?J.predicates.map(nn=>qF(nn,r.traits)):[],an=Dt.length>0?Dt.every(nn=>nn.matched):o.has(J.handle);return {segmentId:J.handle,...J.name?{segmentName:J.name}:{},matched:an,predicates:Dt}}),v=new Map,l=new Map;if(Array.isArray(a?.entitlements))for(let J of a.entitlements){let Dt=Dn(J.unique_handle),an=Dt;an&&Dt&&v.set(an,Dt);let nn=Dn(J.type);an&&nn&&l.set(an,nn);}let x=new Map;if(Array.isArray(a?.plans))for(let J of a.plans){let Dt=Dn(J.unique_handle),an=Dt;an&&Dt&&x.set(an,Dt);}let C=(Dn(r.plan,r.traits.plan,r.traits.plan_handle,r.traits.plan_id)??"").toLowerCase(),S=new Map;if(Array.isArray(a?.segments))for(let J of a.segments){let Dt=Dn(J.handle),an=Dn(J.dimension_id);Dt&&an&&S.set(Dt,an);}let V=Array.isArray(a?.entitlement_rules)?a.entitlement_rules.map((J,Dt)=>{let an=Dn(J.id)??`entitlement_rule_${Dt}`,nn=Dn(J.entitlement_id),vt=nn?v.get(nn):void 0,Cn=Array.isArray(J.targets)?J.targets.filter(dn=>dn.kind==="plan").map(dn=>dn.id):[],Vr=Cn.map(dn=>x.get(dn)??dn),Et=Array.isArray(J.segment_ids)?J.segment_ids.filter(dn=>typeof dn=="string"):[],gn=Dn(J.kind),or=!C||Cn.some(dn=>dn.toLowerCase()===C),Gs=DF(Et,o,S),gi=or&&Gs,on=vt?i[vt]:nn?i[nn]:void 0,Ur=gi?on?.status??"unknown":"unknown",li;if(gi)switch(gn){case "feature":li=J.enabled===false?"disables feature":"grants access";break;case "capability_tier":{let dn=Dn(J.tier_name);li=dn?`unlocks ${dn} tier`:"unlocks capability tier";break}case "usage_limit":{let dn=typeof J.limit_value=="number"?J.limit_value:void 0,_i=Dn(J.unit)??"",$s=Dn(J.period_scope)??"",Zt=$s?` / ${$s.replace("per_","")}`:"";li=dn!=null?`sets limit to ${dn.toLocaleString()}${_i?` ${_i}`:""}${Zt}`:"sets usage limit";break}case "credits":{let dn=J.allowance_value,_i=typeof dn=="number"?dn:void 0,$s=Dn(J.unit)??"credits",Zt=Dn(J.reset_period)??"",_r=Zt?` / ${Zt.replace("per_","")}`:"";li=_i!=null?`grants ${_i.toLocaleString()} ${$s}${_r}`:"grants credit allowance";break}case "seat":{let dn=J.included_count,_i=typeof dn=="number"?dn:void 0;li=_i!=null?`includes ${_i} seat${_i===1?"":"s"}`:"includes seats";break}default:if(nn){let dn=l.get(nn);dn==="feature"?li="grants access":dn&&(li=`${dn.replace(/_/g," ")} entitlement`);}break}return {ruleId:an,...nn?{entitlementId:nn}:{},...vt?{entitlementHandle:vt}:{},...gn?{kind:gn}:{},planScopes:Vr,planIds:Cn,...Et.length>0?{segmentIds:Et}:{},matchesPlan:or,matchesSegment:Gs,matched:gi,outcome:Ur,...li?{outcomeDescription:li}:{},...on?.reason?{reason:on.reason}:{}}}):[],G=Dn(t.output?.output_id),re=this.placements.get(e.placementId),Re=Dn(re?.name)??"",we=Array.isArray(re?.metadata?.surface_template_ids)?re.metadata.surface_template_ids:[],ke=[],ie=new Set;if(Array.isArray(a?.placements))for(let J of a.placements){if(!J||typeof J!="object")continue;let Dt=Dn(J.id)??"",an=Dn(J.name)??"";if(ie.has(Dt))continue;let nn=Dn(t.output?.rule_id);if(nn&&Dt===nn){ie.add(Dt),ke.push(J);continue}if(Re&&(Dt===Re||an===Re||Dt===`pl_${Re}`||an===`pl_${Re}`)){ie.add(Dt),ke.push(J);continue}we.length>0&&(J.payloads??[]).some(Vr=>(Vr.surfaces??[]).some(gn=>{let or=Dn(gn.template_id);return or?we.includes(or):false}))&&(ie.add(Dt),ke.push(J));}let Ot=ke.flatMap(J=>(J.payloads??[]).map(an=>{let nn=an.target,vt=nn?.plan_ids??[],Cn=vt.map(Ur=>x.get(Ur)??Ur),Vr=nn?.segment_chips??[],gn=(an.surfaces??[]).map(Ur=>Dn(Ur.template_id)).filter(Ur=>typeof Ur=="string"),or=vt.length===0||!C||vt.some(Ur=>Ur.toLowerCase()===C),Gs=Vr.length===0||Vr.some(Ur=>o.has(Ur)),gi="active",on=gi==="active"&&or&&Gs;return {payloadId:String(an.id??""),placementId:String(J.id??""),placementName:String(J.name??""),status:gi,planIds:vt,planScopes:Cn,segmentChips:Vr,surfaceTemplateIds:gn,matchesPlan:or,matchesSegment:Gs,eligible:on,selected:!!G&&G===String(an.id??"")}})),Qt=t.output?this.extractPlacementCapPolicies(t.output).flatMap(J=>J.rules.length===0&&J.cooldownMs===void 0?[]:J.rules.length===0?[{count:0,period:"session",cooldownMs:J.cooldownMs}]:J.rules.map(Dt=>({count:Dt.count,period:Dt.period,...J.cooldownMs!==void 0?{cooldownMs:J.cooldownMs}:{}}))):[],ar={ruleId:t.output?.rule_id,decisionId:t.output?.decision_id,category:t.output?.category,suppressionReason:t.suppressionReason,reasonCodes:t.reasonCodes,capPolicies:Qt};return {generatedAt:new Date().toISOString(),input:e,decision:t,targeting:r,policy:s,entitlements:i,segments:p,entitlementRules:V,eligiblePayloads:Ot,placementRules:ar}}usageThresholdForEntitlement(e){return Om(e,this.usageLimitByEntitlement,this.localEntitlementsByHandle,this.usageBalances,this.defaultUsageWarningPercent)}evaluateUsageThresholdCrossings(e,t){return Nm(e,t,i=>this.usageThresholdForEntitlement(i)).map(i=>this.emitTrigger(i.type,{entitlement_handle:i.entitlement_handle,current_usage:i.current_usage,usage_limit:i.usage_limit,usage_percent:i.usage_percent,threshold:i.threshold}))}deriveTrialTriggerStage(e){return Hm(e,this.lastTrialTriggerStage,this.defaultTrialExpiringDays)}async evaluateTrialLifecycleTriggers(e){let t=this.deriveTrialTriggerStage(e);if(!this.placementBehavior.enableTrialAutoTriggers){this.lastTrialTriggerStage=t;return}if(t!==this.lastTrialTriggerStage){if(this.lastTrialTriggerStage=t,t==="midpoint"){await this.emitTrigger("trial_midpoint",{days_remaining:e.days_remaining});return}if(t==="expiring"){await this.emitTrigger("trial_expiring",{days_remaining:e.days_remaining});return}t==="expired"&&await this.emitTrigger("trial_expired",{days_remaining:0});}}resolveAnonymousId(){let e=`revturbine:${this.tenantId}:anon`;try{let t=this.persistentStore.getItem(e);if(t)return t;let r=gr();return this.persistentStore.setItem(e,r),r}catch{return gr()}}installBridge(){let e={getSnapshot:()=>({tenantId:this.tenantId,user:this.userContext,page:this.pageContext,placements:Array.from(this.placements.values())}),setPageContext:t=>{this.setPageContext(t);},setUserContext:t=>{this.setUserContext(t);}};window.__RT_SDK_BRIDGE__=e;}installRouteTracking(){if(hc())return;let e=window.history;if(e.__rtPatched)return;let t=()=>{window.dispatchEvent(new CustomEvent(US,{detail:{path:window.location.pathname,title:document.title}}));},r=e.pushState.bind(e);e.pushState=((...s)=>{r(...s),t();});let i=e.replaceState.bind(e);e.replaceState=((...s)=>{i(...s),t();}),window.addEventListener("popstate",t),window.addEventListener(US,s=>{let a=s.detail;this.onRouteChange({path:a.path,title:a.title,tags:a.tags});}),e.__rtPatched=true;}mergeUserContext(e){return qm(this.userContext,e)}mergePageContext(e){return {...this.pageContext,...e,tags:Ul(e.tags||this.pageContext.tags)}}collectPageContextIssues(){let e=[],t={...this.policy.inferPage?dm():{},...this.pageContext},r=String(t.url||"").trim();if(!r)e.push({code:"invalid_page_context_url",reason:"Page context URL is missing."});else try{new URL(r);}catch{e.push({code:"invalid_page_context_url",reason:"Page context URL is not a valid absolute URL.",details:{value:r}});}return t.tags&&!Array.isArray(t.tags)&&e.push({code:"invalid_page_context_tags",reason:"Page tags must be an array of strings."}),e}collectPayloadIssues(e){let t=[];if(!Se(e))return t.push({code:"invalid_event_payload",reason:"Event payload must be a plain object."}),t;let r=HS(e),i=typeof e.placement_id=="string"&&e.placement_id.trim()?e.placement_id:typeof r?.placement_id=="string"?r.placement_id:null;return typeof i=="string"&&i.trim()&&(this.placements.has(i)||t.push({code:"unknown_placement_id",reason:"Payload placement_id is not registered in SDK runtime.",details:{placement_id:i}})),t}buildValidationWarningEvent(e,t,r){return this.toEventEnvelope(mm,{source_event_type:e,warning_count:t.length,warning_codes:t.map(i=>i.code),warnings:t,page_context:{url:this.pageContext.url??null,title:this.pageContext.title??null},payload_snapshot:Se(r)?r:null})}toEventEnvelope(e,t){let r={...this.policy.inferPage?dm():{},...this.pageContext},i=r.url||(Mr()?window.location.href:""),s=(()=>{try{return new URL(i).pathname}catch{return Mr()?window.location.pathname:"/"}})();return {tenant_id:this.tenantId,type:e,level:"INFO",message:`${e} captured by ${this.mode} runtime`,url:i,path:s,page_title:r.title||(Mr()?document.title:""),event_time:new Date().toISOString(),anonymous_id:this.anonymousId,user_id:this.userContext.id||null,session_id:this.sessionId,tags:Ul(r.tags),identity:{tenant_id:this.tenantId,user_id:this.userContext.id||null,anonymous_id:this.anonymousId,traits:e===Kh?{}:{...this.userContext.custom||{}}},properties:t}}warnPiiRedactedOnce(){this.piiRedactionWarned||(this.piiRedactionWarned=true,console.warn("[RevTurbine] Detected and redacted PII-shaped values (emails / card numbers) from event data before sending. Do not put PII in event properties or traits; this is best-effort redaction, not a guarantee."));}anonymousTelemetryActive(){return !this.ingestPublicKey&&this.anonymousTelemetryEnabled&&!this.previewMode&&Mr()}diagnosticTelemetryActive(){return this.anonymousTelemetryEnabled&&this.analyticsEnabled&&!this.previewMode&&Mr()}emitResolutionFailure(e){if(!this.diagnosticTelemetryActive())return;let t=`${e.reason}|${e.placement_handle??e.entitlement_handle??""}`;this.emittedResolutionDiagnostics.has(t)||this.emittedResolutionDiagnostics.size>=yd.RESOLUTION_DIAGNOSTIC_SESSION_CAP||(this.emittedResolutionDiagnostics.add(t),this.postAnonMeta("resolution_failure",e));}reportSdkError(e,t){if(this.diagnosticTelemetryActive()&&!this.emittedSdkErrors.has(e)&&!(this.emittedSdkErrors.size>=yd.RESOLUTION_DIAGNOSTIC_SESSION_CAP)){this.emittedSdkErrors.add(e);try{this.postAnonMeta("sdk_error",t?{reason:e,message:t}:{reason:e});}catch{}}}async emitSdkInitTelemetry(){this.anonymousTelemetryActive()&&await this.emitAnonMeta("sdk_init",{config_shape:this.computeConfigShape()});}computeConfigShape(){let e=this.getConfiguredExportedConfig();if(!e)return;let t=e.placements??[],r=t.reduce((i,s)=>i+(s.payloads?.length??0),0);return {plans:e.plans?.length??0,entitlements:e.entitlements?.length??0,entitlement_rules:e.entitlement_rules?.length??0,segments:e.segments?.length??0,placements:t.length,placement_payloads:r,content_ui_paths:e.content_ui_paths?.length??0,surface_templates:e.surface_templates?.length??0}}async emitAnonMeta(e,t={}){this.anonymousTelemetryActive()&&(this.showAnonTelemetryNoticeOnce(),await this.postAnonMeta(e,t));}async postAnonMeta(e,t={}){try{let r=this.getConfiguredExportedConfig(),i=r?.format_version!=null?String(r.format_version):void 0,s=i?`${this.tenantId}:${i}`:this.tenantId,a=(await BS(s)).slice(0,64),p={events:[{event_type:e,occurred_at:new Date().toISOString(),request_id:gr(),config_hash_id:a,sdk_version:Qv,runtime_mode:this.runtimeMode,...i?{bundle_version:i}:{},...t.config_shape?{config_shape:t.config_shape}:{},...t.message?{message:t.message.slice(0,500)}:{},...t.reason?{reason:t.reason.slice(0,64)}:{},...t.placement_handle?{placement_handle:t.placement_handle.slice(0,64)}:{},...t.slot_handle?{slot_handle:t.slot_handle.slice(0,64)}:{},...t.surface?{surface:t.surface.slice(0,64)}:{},...t.plan_handle?{plan_handle:t.plan_handle.slice(0,64)}:{},...t.entitlement_handle?{entitlement_handle:t.entitlement_handle.slice(0,64)}:{}}]};await fetch(this.endpointFor("ingestSdkMeta",TF),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(p),keepalive:!0});}catch{}}showAnonTelemetryNoticeOnce(){this.anonTelemetryNoticeShown||(this.anonTelemetryNoticeShown=true,console.info("[RevTurbine] Sending anonymous SDK telemetry (config-shape counts and SDK version only \u2014 no user data or PII). Disable it by setting `anonymousTelemetry: false` in your initRevTurbine() options."));}async sendEvents(e){if(e.length===0)return;if(!this.telemetryConsented()){this.telemetryCounters.dropped+=e.length;return}let t=0,r=e.map(x=>{let I=Hb(x);return t+=I.redactions,I.value}),i=this.providerRegistry.has("events")||!this.isLocalOnlyMode()&&this.analyticsEnabled;if(t>0&&i&&this.warnPiiRedactedOnce(),this.telemetryCounters.redacted+=t,this.dispatchToEventConsumers(r),this.isLocalOnlyMode()){this.persistLocalRuntimeState();return}if(!this.analyticsEnabled)return;let s=gr(),a=this.getConfiguredExportedConfig()?.playbook_version_id,o=r.map(x=>{let I=x.user_id||x.anonymous_id,C=Wp(this.userContext.account_id||I),S=Yp({level:x.level,message:x.message,path:x.path,url:x.url,page_title:x.page_title,session_id:x.session_id,anonymous_id:x.anonymous_id,tags:x.tags,traits:x.identity.traits??null,payload:x.properties,source:RF});return t+=S.redactions+(C.redacted?1:0),{environment_id:this.environmentId,user_id:I,account_id:C.value,event_name:Bl(x.type).slice(0,120),event_ts:x.event_time,properties:JSON.stringify(S.value),...AF(x.properties),...UF(x.properties),origin:LF(x.type),playbook_version:typeof a=="string"&&a.length>0?a:null,event_id:qh.next(),request_id:gr(),tenant_id:x.tenant_id,...this.testTraffic?{test:true}:{}}});t>0&&this.warnPiiRedactedOnce();let p=this.endpointFor("ingestEvents",PF),v={method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${this.ingestPublicKey??this.apiKey}`,"x-request-id":s},body:JSON.stringify({events:o}),keepalive:true};(await Dh(()=>fetch(p,v))).delivered?this.telemetryCounters.sent+=o.length:this.telemetryCounters.failed+=o.length;}dispatchToEventConsumers(e){this.providerRegistry.has("events")&&this.providerRegistry.get("events").then(t=>{let r=t?.consumers;if(!(!r||r.length===0))for(let i of r)try{Promise.resolve(i.consume(e)).catch(()=>{});}catch{}}).catch(()=>{});}telemetryConsented(){return this.telemetryConsent==="granted"}setTelemetryConsent(e){this.telemetryConsent=e;}getTelemetryConsent(){return this.telemetryConsent}getTelemetryCounters(){return {...this.telemetryCounters}}async capture(e,t,r){if(!this.telemetryConsented()){this.telemetryCounters.dropped+=1;return}let i=Bl(e),s=this.toEventEnvelope(i,t),a=[...this.collectPageContextIssues(),...this.collectPayloadIssues(t)],o=[s];if(a.length>0&&o.push(this.buildValidationWarningEvent(i,a,t)),this.telemetryCounters.created+=o.length,r?.immediate){await this.sendEvents(o);return}this.events.push(...o),this.telemetryCounters.queued+=o.length,this.events.length>=this.maxBatchSize&&await this.flushEvents();}async trackControlPlaneEvent(e,t={},r){let{eventName:i,properties:s}=zb(e,t);await this.capture(i,s,r);}async flushEvents(){if(this.events.length===0)return;let e=[...this.events];this.events.length=0,await this.sendEvents(e);}startEventBatchFlushing(){if(!Mr()||this.isLocalOnlyMode())return;this.flushIntervalMs>0&&(this.flushTimer=setInterval(()=>{this.flushEvents();},this.flushIntervalMs),this.flushTimer.unref?.());let e=()=>{this.flushEvents();},t=()=>{document.visibilityState==="hidden"&&this.flushEvents();};window.addEventListener("pagehide",e),document.addEventListener("visibilitychange",t),this.batchingTeardown.push(()=>window.removeEventListener("pagehide",e),()=>document.removeEventListener("visibilitychange",t));}dispose(){this.unbridgeUiPathCtaResolvers(),this.unregisterBuiltinSnoozeResolver(),this.flushTimer!==void 0&&(clearInterval(this.flushTimer),this.flushTimer=void 0);for(let e of this.batchingTeardown.splice(0))try{e();}catch{}this.flushEvents();}async emitSemantic(e,t,r){let i=Se(t)?t:{};await this.capture(e,{semantic:true,payload:i},r);}async evaluateUserSegmentsAndUsage(e,t=false){let r=await this.fetchUserContext(this.userContext.id||""),i={...this.userContext,...e,custom:{...this.userContext.custom||{},...e.custom||{}}},s=await this.fetchUserContext(i.id||""),a=new Set(r.segmentIds||[]),o=new Set(s.segmentIds||[]),p=Array.from(o).filter(l=>!a.has(l)),v=Array.from(a).filter(l=>!o.has(l));for(let l of p)await this.emitSemantic("segment_enrolled",{segment_id:l,user_id:i.id??null});for(let l of v)await this.emitSemantic("segment_unenrolled",{segment_id:l,user_id:i.id??null});if(t){let l=r.usage||{},x={...l,...this.usageBalances},I=this.evaluateUsageThresholdCrossings(l,x);await Promise.all(I);}}emitObservedContextFields(e){let t=Object.keys(e??{}).filter(r=>r.length>0).sort();t.length!==0&&this.capture(Kh,{context_fields:t});}setUserContext(e){let t=this.userContext;this.userContext=this.mergeUserContext(e),this.recalculateDerivedUsageTraits(),this.markSegmentsDirtyFromContextChange(t,this.userContext),this.persistLocalRuntimeState(),this.evaluateUserSegmentsAndUsage(e,false),this.emitObservedContextFields(e.custom);}setPageContext(e){this.pageContext=this.mergePageContext(e),this.persistLocalRuntimeState();}refreshPageContext(){this.pageContext=this.mergePageContext(dm());}hydrate(e){if(e.version!=="1.0.0"){console.warn(`[RevTurbine] Unknown hydration payload version: ${e.version}. Skipping.`);return}let t=this.userContext;e.user&&(this.userContext=this.mergeUserContext({id:e.user.id,custom:e.user.traits,usage:{}}),this.recalculateDerivedUsageTraits());let r=(e.ttl_seconds??60)*1e3,i=Date.now()+r;for(let s of e.decisions??[]){if(!s.output)continue;let a=[this.tenantId,s.slot_id??s.entitlement_handle??s.placement_handle??"unknown",e.user?.id??this.anonymousId].join(":"),o=Se(s.output?.content)?s.output.content:{};this.decisionCache.set(a,{value:{placementId:s.slot_id??s.entitlement_handle??s.placement_handle??"unknown",requestId:e.request_id,visible:s.visible,decisionSource:"cache",reasonCodes:s.reason_codes??[],content:Ta(String(o.header??""),String(o.body??""),String(o.cta_label??"")),output:s.output},expiresAt:i});}if(this.persistDecisionCache(),e.entitlements)for(let[s,a]of Object.entries(e.entitlements))this.localEntitlementsByHandle.set(s,{status:a.status,allowed:a.allowed,reason:a.reason,current_tier:a.current_tier,placement:a.placement});e.trial_status&&(this.localTrialStatus={in_trial:e.trial_status.in_trial,trial_type:e.trial_status.trial_type,plan_handle:e.trial_status.plan_handle,day_number:e.trial_status.day_number,days_remaining:e.trial_status.days_remaining}),e.user_context?.usage_balances&&(this.usageBalances={...this.usageBalances,...e.user_context.usage_balances},this.recalculateDerivedUsageTraits()),this.markSegmentsDirtyFromContextChange(t,this.userContext);}async generatePlacementId(e){return jm({tenantId:this.tenantId,placementName:e.placementName,placementScopeKey:e.placementScopeKey,pageRoute:e.normalizedPageRoute||this.currentPathname()},{sha256Base64Url:BS,randomHex:Jh})}async registerPlacement(e){let t=String(e.placementScopeKey||e.name||"").trim();return this.registerSurfaceSlot({id:t||String(e.name||"surface_slot").trim(),name:e.name,metadata:Se(e.metadata)?e.metadata:void 0})}async upsertSurfaceSlot(e){if(this.isLocalOnlyMode())return;let t=gr(),r=this.endpointFor("surfaceSlots","/api/placements").replace(/\/+$/,""),i=BF(e.placementScopeKey||e.id||e.name),s={...Se(e.metadata)?e.metadata:{},surface_slot_id:e.placementScopeKey||e.id,registration_source:"sdk_surface_slot",route:e.route},a={name:e.name,slug:i,description:`Surface slot ${e.placementScopeKey||e.id}`,slot_type:"custom",status:"active",targeting_rules:{},content:{},priority:0,metadata:s},o={"content-type":"application/json",authorization:`Bearer ${this.apiKey}`,"x-tenant-id":this.tenantId,"x-request-id":t},p=await fetch(`${r}/${encodeURIComponent(e.id)}`,{method:"PUT",headers:o,body:JSON.stringify(a)});if(p.ok){this.syncedSurfaceSlotIds.add(e.id);return}if(p.status!==404)throw new Error(`surface_slot_upsert_failed:${p.status}`);let v=await fetch(r,{method:"POST",headers:o,body:JSON.stringify(a)});if(!v.ok)throw new Error(`surface_slot_create_failed:${v.status}`);this.syncedSurfaceSlotIds.add(e.id);}async registerSurfaceSlot(e){let t=ro(this.currentPathname()),r=String(e?.id||"").trim(),i=String(e?.name||r).trim(),s=[];r||s.push({code:"invalid_surface_slot_id",reason:"SurfaceSlot id is required and must be a non-empty string."}),i||s.push({code:"invalid_placement_name",reason:"SurfaceSlot name is missing or empty."}),e?.metadata!==void 0&&!Se(e.metadata)&&s.push({code:"invalid_placement_metadata",reason:"Placement metadata must be a plain object when provided."});let a=await this.generatePlacementId({placementName:i||r||"invalid_surface_slot",placementScopeKey:r||void 0,normalizedPageRoute:t}),o={id:a,route:t,name:i||"invalid_surface_slot",placementScopeKey:r||void 0,metadata:{...Se(e.metadata)?e.metadata:{},surface_slot_id:r||null,...Array.isArray(e.surfaceTemplateIds)&&e.surfaceTemplateIds.length>0?{surface_template_ids:e.surfaceTemplateIds}:{}}},p=this.placements.get(a),v=p?this.stableStringify(p):null,l=this.stableStringify(o);return (!p||v!==l)&&(this.placements.set(a,o),this.persistLocalRuntimeState(),this.syncedSurfaceSlotIds.delete(a)),!this.isLocalOnlyMode()&&!this.syncedSurfaceSlotIds.has(a)&&await this.upsertSurfaceSlot(o),s.length>0&&await this.sendEvents([this.buildValidationWarningEvent("placement_registered",s,{surface_slot_id:r||null,placement_id:a,route:t,placement_name:i||null})]),a}async persistPlacementTypes(e){if(this.isLocalOnlyMode())return;let t=(Array.isArray(e)?e:[]).map(s=>NF(s)).filter(s=>s!==null);if(t.length===0)return;let r=gr(),i=await fetch(this.endpointFor("placementTypes","/api/sdk/placement-types"),{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${this.apiKey}`,"x-tenant-id":this.tenantId,"x-request-id":r},body:JSON.stringify({request_id:r,tenant_id:this.tenantId,types:t})});if(!i.ok)throw new Error(`persist_placement_types_failed:${i.status}`)}stableStringify(e){return Ps(e)}decisionCacheKey(e,t){return Lm({tenantId:this.tenantId,placementId:e.placementId,userId:e.userId,contextMode:e.contextMode??"auto",overrides:e.overrides??{},traits:e.traits??{},route:this.currentPathname(),...t?{runtimeContextFingerprint:t}:{}})}interactionStateKey(e){return q_({tenantId:this.tenantId,...e})}readDecisionCache(e){let t=this.decisionCache.get(e);return t?t.expiresAt<=Date.now()?(this.decisionCache.delete(e),this.persistDecisionCache(),null):{...t.value,decisionSource:"cache"}:null}writeDecisionCache(e,t,r){let i=Date.now()+Math.max(5e3,r??this.defaultDecisionTtlMs);this.decisionCache.set(e,{expiresAt:i,value:t}),this.persistDecisionCache();}suppressionForState(e){return D_(e)}placementCapKey(e){return [this.tenantId,this.userContext.id||this.anonymousId,e.surface.type,e.output_id].join(":")}extractPlacementCapPolicies(e){return Fd(e)}applyPlacementCapsIfNeeded(e,t={}){if(!this.placementBehavior.enableClientCapsEnforcement)return {allowed:true};let r=t.tick??true,i=this.placementCapKey(e),s=this.presentationCapsByKey.get(i),a=Bm(e,i,s,Date.now());return a.updatedState&&r&&(this.presentationCapsByKey.set(i,a.updatedState),a.allowed&&this.persistPresentationCaps()),{allowed:a.allowed,reason:a.reason}}gateDecisionByCaps(e,t={}){if(!this.placementBehavior.enableClientCapsEnforcement||!e.visible||!e.output)return e;let r=this.applyPlacementCapsIfNeeded(e.output,{tick:t.tick??true});if(r.allowed)return e;let i=r.reason??"cap_exceeded";return {...e,visible:false,reasonCodes:[...e.reasonCodes??[],i],suppressionReason:i}}normalizeDecisionFromResponse(e,t,r,i){return Um(e,t,r,i)}async getPlacementDecision(e){let t=this.placements.get(e.placementId),r=gr();if(this.isDisabledByProviderFailure())return this.disabledDecisionForPlacement(e.placementId,t?.name);if(!t)return this.emitResolutionFailure({reason:"placement_not_registered",placement_handle:e.placementId}),{placementId:e.placementId,requestId:r,visible:false,decisionSource:"fallback",reasonCodes:["placement_not_registered"],suppressionReason:"placement_not_registered",content:Ta("Placement not found","Register the placement before requesting a decision.","Register placement")};let i=this.interactionStateKey({placementId:e.placementId,userId:e.userId}),s=this.suppressionForState(this.interactionState.get(i));if(s.suppressed)return {placementId:e.placementId,requestId:r,visible:false,decisionSource:"cache",reasonCodes:s.reason?[s.reason]:[],suppressionReason:s.reason,content:Ta(`${t.name} suppressed`,"Suppressed due to recent interaction state.","Continue")};let a,o=await this.localRuntime?.getContext?.(),p=this.providerRegistry.size>0?await this.providerRegistry.resolveAll():this.synthesizeProviderContext();(o||p)&&(a=this.stableStringify({legacyCtx:o??{},providerCtx:p??{}}));let v=this.decisionCacheKey(e,a),l=this.readDecisionCache(v);if(l)return this.gateDecisionByCaps(l,{tick:false});{let I=this.getOrBuildPlacementResolver();if(I){let S={...o,...p?{__providers:p}:{}},V=this.gateDecisionByCaps(await I(e,t,S));return this.localDecisionsByPlacementId.set(e.placementId,V),this.writeDecisionCache(v,V,e.ttlMs),this.persistLocalRuntimeState(),V}let C=this.localDecisionsByPlacementId.get(e.placementId);if(C){let S=this.gateDecisionByCaps({...C,decisionSource:"fallback"});return this.writeDecisionCache(v,S,e.ttlMs),this.persistLocalRuntimeState(),S}}this.emitResolutionFailure({reason:"config_unavailable",placement_handle:e.placementId});let x={placementId:e.placementId,requestId:r,visible:false,decisionSource:"fallback",reasonCodes:["config_unavailable"],suppressionReason:"config_unavailable",content:Ta(`${t.name} unavailable`,"Playbook config not yet available; placement decisions resolve locally once it loads.","Continue")};return this.refreshExportedConfigSnapshot(),x}async preloadPlacementDecisions(e){let t=new Map;for(let r of e)t.set(this.decisionCacheKey(r),r);await Promise.allSettled(Array.from(t.values()).map(r=>this.getPlacementDecision(r)));}async bootstrapPlacementDecisions(e){if(this.isDisabledByProviderFailure()){await Promise.all(e.map(async r=>{let i=await this.getPlacementDecision(r),s=this.decisionCacheKey(r);this.writeDecisionCache(s,i,r.ttlMs);}));return}let t=new Map;for(let r of e){if(!this.placements.get(r.placementId)||!r.userId)continue;let s=this.stableStringify({userId:r.userId,contextMode:r.contextMode??"auto",overrides:r.overrides??{},traits:r.traits??{},ttlMs:r.ttlMs??null}),a=t.get(s);if(a){a.placementIds.push(r.placementId);continue}t.set(s,{userId:r.userId,contextMode:r.contextMode,overrides:r.overrides,traits:r.traits,ttlMs:r.ttlMs,placementIds:[r.placementId]});}for(let r of t.values()){let i=e.filter(s=>r.placementIds.includes(s.placementId)&&s.userId===r.userId);await Promise.allSettled(i.map(s=>this.getPlacementDecision(s)));}}updateInteractionState(e){let t=this.interactionStateKey({placementId:e.placementId,userId:e.userId,treatmentId:e.treatmentId}),r=Date.now(),i=e.metadata??{},a={...this.interactionState.get(t)??{updatedAt:new Date(r).toISOString()},lastInteractionType:e.interactionType,updatedAt:e.interactionAt??new Date(r).toISOString()};if(e.interactionType==="dismiss"){let o=Number(i.cooldown_ms);a.suppressedUntil=r+(Number.isFinite(o)&&o>0?o:this.dismissCooldownDefaultMs);}if(e.interactionType==="remind_me_later"){let o=Number(i.remind_after_seconds);a.suppressedUntil=r+(Number.isFinite(o)&&o>0?o*1e3:this.defaultRemindLaterMs);}if(e.interactionType==="cta_clicked"){let o=Number(i.cooldown_ms);a.suppressedUntil=r+(Number.isFinite(o)&&o>0?o:this.dismissCooldownDefaultMs);}if(e.interactionType==="cta_completed"&&(a.suppressedUntil=r+300*1e3),e.interactionType==="suppress"){let o=Number(i.suppress_duration_ms);a.suppressedUntil=r+(Number.isFinite(o)&&o>0?o:this.defaultDismissCooldownMs);}this.interactionState.set(t,a),this.persistInteractionState();}async flushInteractionQueue(){if(this.interactionQueue.length===0)return;let e=[...this.interactionQueue];if(this.interactionQueue.length=0,this.isLocalOnlyMode()){this.persistLocalRuntimeState();return}let t=e.map(r=>({user_id:r.userId,placement_id:r.placementId,treatment_id:r.treatmentId,interaction_type:r.interactionType,interaction_at:r.interactionAt,surface_slot_id:r.surfaceSlotId,surface_template_id:r.surfaceTemplateId,payload_id:r.payloadId,...r.experimentId?{experiment_id:r.experimentId}:{},...r.variantKey?{variant_key:r.variantKey}:{},metadata:r.metadata??{},tenant_id:this.tenantId,...this.testTraffic?{test:true}:{}}));try{(await fetch(this.endpointFor("touchpointTransition",CF),{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${this.apiKey}`,"x-tenant-id":this.tenantId,"x-request-id":gr()},body:JSON.stringify(t.length===1?t[0]:t)})).ok||(await fetch(this.endpointFor("legacyInteractions",kF),{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${this.apiKey}`,"x-tenant-id":this.tenantId,"x-request-id":gr()},body:JSON.stringify(e.length===1?e[0]:e)})).ok||this.interactionQueue.unshift(...e);}catch{this.interactionQueue.unshift(...e);}}async trackTreatmentInteraction(e){let t={...e,interactionAt:e.interactionAt??new Date().toISOString()};this.updateInteractionState(t),this.interactionQueue.push(t),this.flushInteractionQueue();let r=t.placementId,i=t.treatmentId,s=t.metadata??{},a=Number(s.cooldown_ms),o=Number.isFinite(a)&&a>0?a:void 0;if(t.interactionType==="dismiss")this.impressionHistory.recordDismissal(r,i,void 0,void 0,o);else if(t.interactionType==="cta_completed")this.impressionHistory.recordConversion(r,i);else if(t.interactionType==="cta_clicked")this.impressionHistory.recordClickThru(r,i,void 0,void 0,o);else if(t.interactionType==="suppress"){let l=Number(s.suppress_duration_ms);this.impressionHistory.recordSuppression(r,i,void 0,s,Number.isFinite(l)&&l>0?l:void 0);}let p=t.metadata??{},v=typeof p.decision_id=="string"?p.decision_id:null;await this.emitSemantic("placement_interaction",{user_id:t.userId,placement_id:t.placementId,treatment_id:t.treatmentId??null,interaction_type:t.interactionType,interaction_at:t.interactionAt??null,...v?{decision_id:v}:{},...t.experimentId?{experiment_id:t.experimentId}:{},...t.variantKey?{variant_key:t.variantKey}:{},metadata:p},{immediate:false});}async getPlacementContent(e,t){let r=this.placements.get(e),i=gr();if(this.isDisabledByProviderFailure()){let o=this.disabledDecisionForPlacement(e,r?.name);return {placementId:e,requestId:i,decisionSource:"fallback",content:o.content}}if(this.isLocalOnlyMode()){let o=this.localPlacementsByLookupKey.get(this.localPlacementLookupKey({placementHandle:e}));return {placementId:e,requestId:i,decisionSource:o?"remote":"fallback",content:Ta(typeof o?.content?.title=="string"?String(o.content.title):`${r?.name??e} treatment`,typeof o?.content?.body=="string"?String(o.content.body):"Local runtime placement content.",typeof o?.content?.cta=="string"?String(o.content.cta):"Continue")}}if(!r)return {placementId:e,requestId:i,decisionSource:"fallback",content:Ta("Placement not found","Register the placement before requesting content.","Register placement")};let s=this.userContext.id??this.anonymousId,a=await this.getPlacementDecision({placementId:e,userId:s});return {placementId:e,requestId:i,decisionSource:a.decisionSource==="fallback"?"fallback":"remote",content:a.content??Ta(`${r.name} treatment`,"Fallback treatment active while no decision content is available.","Continue")}}normalizePlacementOutput(e){let t=wd(e,gr);return t&&Se(e)&&typeof e.decision_id!="string"&&this.capture(mm,{reason:"placement response missing decision_id; generated synthetic",output_id:t.output_id,synthetic_decision_id:t.decision_id}),t}validateTrialStatusShape(e){return Rm(e)}async getPlacement(e){if(this.isDisabledByProviderFailure())return this.disabledPlacementOutputForConfig(e);let t=e.slotId,r=e.surfaceType;if(r&&!DS.has(r))return this.capture(mm,{reason:`getPlacement called with unknown surfaceType: ${String(r)}`,slot_id:t??null}),null;gr();if(this.isLocalOnlyMode()&&this.localRuntime?.resolvers?.getPlacement){let o=await this.localRuntime.resolvers.getPlacement(e);return o&&this.applyPlacementCapsIfNeeded(o).allowed?o:null}if(!this.getConfiguredExportedConfig()&&!this.isLocalOnlyMode())return this.refreshExportedConfigSnapshot(),null;let s=this.localPlacementForConfig(e);return s&&this.applyPlacementCapsIfNeeded(s).allowed?s:null}async checkEntitlement(e,t){if(this.isDisabledByProviderFailure())return this.emitResolutionFailure({reason:"sdk_disabled_provider_failure",entitlement_handle:e,plan_handle:this.resolveContextPlanRaw()||void 0}),{status:"denied",allowed:false,reason:this.sdkDisabledReason??"sdk_disabled_provider_failure"};if(this.isLocalOnlyMode()){let s=this.localRuntime?.resolvers?.checkEntitlement;if(s){let a=await s(e,t);return this.localEntitlementsByHandle.set(e,a),this.persistLocalRuntimeState(),a}}else this.getConfiguredExportedConfig()||await this.refreshExportedConfigSnapshot();let r=this.deriveLocalEntitlementFromConfiguredRules(e,t);if(r)return this.localEntitlementsByHandle.set(e,r),this.persistLocalRuntimeState(),r;let i=this.localEntitlementsByHandle.get(e);return i||(this.isLocalOnlyMode()||this.emitResolutionFailure({reason:"config_unavailable",entitlement_handle:e,plan_handle:this.resolveContextPlanRaw()||void 0}),{status:"denied",allowed:false,reason:this.isLocalOnlyMode()?"local_runtime_default_allow":"config_unavailable"})}updateUsage(e){let t=this.userContext;this.usageBalances={...this.usageBalances,...e},this.recalculateDerivedUsageTraits(),this.markSegmentsDirtyFromContextChange(t,this.userContext),this.persistLocalRuntimeState(),this.evaluateUserSegmentsAndUsage({},true);}getUserContext(){let e=this.userContext.id||this.anonymousId,t=new Date().toISOString();return {id:e,tenant_id:this.tenantId,user_id:e,created_at:t,updated_at:t,account_id:this.userContext.account_id,email:this.userContext.email,plan:this.userContext.plan,usage:this.userContext.usage??{},entitlements:this.userContext.entitlements??{},custom:Object.fromEntries(Object.entries(this.userContext.custom??{}).filter(([,r])=>typeof r=="string"||typeof r=="number"||typeof r=="boolean"||r===null)),personalization:Object.fromEntries(Object.entries(this.userContext.personalization??{}).filter(([,r])=>typeof r=="string"||typeof r=="number")),derived_computed_at:null}}async fetchUserContext(e){let t=gr();if(this.isLocalOnlyMode()){let r=this.localRuntime?.resolvers?.fetchUserContext;if(r){let s=await r(e);return this.localUserContextsByUserId.set(e,s),this.persistLocalRuntimeState(),s}let i=this.localUserContextsByUserId.get(e);return i||{userId:e,segmentIds:[],traits:{},plan:void 0,usage:this.usageBalances}}try{let r=await fetch(this.endpointFor("userContext","/api/sdk/user-context"),{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${this.apiKey}`,"x-tenant-id":this.tenantId,"x-request-id":t},body:JSON.stringify({request_id:t,tenant_id:this.tenantId,user_id:e,context:{user:this.userContext,page:this.pageContext}})});if(!r.ok)return {userId:e,segmentIds:[],traits:{}};let i=await r.json(),s={userId:e,segmentIds:Array.isArray(i.segment_ids)?i.segment_ids.filter(a=>typeof a=="string"):[],traits:Se(i.traits)?i.traits:{},plan:typeof i.plan=="string"?i.plan:void 0,usage:Se(i.usage)?Object.fromEntries(Object.entries(i.usage).filter(([,a])=>typeof a=="number")):void 0};return this.localUserContextsByUserId.set(e,s),this.persistLocalRuntimeState(),s}catch{return {userId:e,segmentIds:[],traits:{}}}}ensureServerUserContextProvider(){return this.serverUserContextProvider||(this.serverUserContextProvider=new Tu,this.providerRegistry.register(this.serverUserContextProvider)),this.serverUserContextProvider}async fetchClientContext(e){typeof e=="string"&&e.length>0&&(this.clientContextToken=e);let t=this.clientContextToken;if(t)try{let r=await fetch(this.endpointFor("clientContext","/api/sdk/client-context"),{method:"GET",headers:{authorization:`Bearer ${t}`}});if(!r.ok){r.status===401&&(this.clientContextToken=void 0);return}let i=await r.json(),s=this.mapClientSafeContext(i);if(Object.keys(s).length===0)return;this.ensureServerUserContextProvider().setSnapshot({trial:s.trial?{in_trial:s.trial.in_trial,state:s.trial.state,days_remaining:s.trial.days_remaining}:void 0,payment_at_risk:s.payment_at_risk});let a=JSON.parse(JSON.stringify({trial:s.trial??null,plan:s.plan??null})),o=await Dm(a)+`:${s.payment_at_risk===!0?1:0}`;if(o===this.lastServerContextHash)return;this.lastServerContextHash=o,this.applyServerContextPatch(s);}catch{}}mapClientSafeContext(e){let t={},i=["active","running_out","expired","converted","none"].find(a=>a===e.trial?.status);i&&(t.trial={in_trial:i==="active"||i==="running_out",state:i,...typeof e.trial?.days_remaining=="number"?{days_remaining:e.trial.days_remaining}:{}}),e.billing?.health==="attention_required"&&(t.payment_at_risk=true);let s=e.plan?.handle;return typeof s=="string"&&s.length>0&&(t.plan={id:s,name:typeof e.plan?.name=="string"&&e.plan.name.length>0?e.plan.name:s}),t}applyServerContextPatch(e){let t=this.userContext;this.userContext=this.mergeUserContext(e),this.recalculateDerivedUsageTraits(),this.markSegmentsDirtyFromContextChange(t,this.userContext),this.persistLocalRuntimeState(),this.evaluateUserSegmentsAndUsage(this.userContext,false);}async recordImpression(e,t,r,i){await this.impressionHistory.recordImpression(e,t,r,i);}async recordDismissal(e,t,r,i,s){await this.impressionHistory.recordDismissal(e,t,r,i,s);}async recordClickThru(e,t,r,i,s){await this.impressionHistory.recordClickThru(e,t,r,i,s);}async recordConversion(e,t,r,i){await this.impressionHistory.recordConversion(e,t,r,i);}async getTrialStatus(){let e=gr();if(this.isLocalOnlyMode()){let t=this.localRuntime?.resolvers?.getTrialStatus;if(t){let r=await t();return this.localTrialStatus=r,await this.evaluateTrialLifecycleTriggers(r),this.persistLocalRuntimeState(),r}return await this.evaluateTrialLifecycleTriggers(this.localTrialStatus),this.localTrialStatus}try{let t=await fetch(this.endpointFor("trialStatus","/api/sdk/trial-status"),{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${this.apiKey}`,"x-tenant-id":this.tenantId,"x-request-id":e},body:JSON.stringify({request_id:e,tenant_id:this.tenantId,user_id:this.userContext.id})});if(!t.ok)return {in_trial:!1};let r=await t.json(),i=this.validateTrialStatusShape(r);return this.localTrialStatus=i,await this.evaluateTrialLifecycleTriggers(i),this.persistLocalRuntimeState(),i}catch{return {in_trial:false}}}async setTrialInstances(e,t){let r=this.getConfiguredExportedConfig(),i=t?.nowIso??new Date().toISOString(),{trial:s}=gm({...r?.free_trial_rules!==void 0?{freeTrialRules:r.free_trial_rules}:{},...r?.reverse_trial_rules!==void 0?{reverseTrialRules:r.reverse_trial_rules}:{},instances:e,nowIso:i,usageBalances:this.usageBalances,...t?.basePlanHandle!==void 0?{basePlanHandle:t.basePlanHandle}:{}}),a=s??{in_trial:false};return this.localTrialStatus=a,await this.evaluateTrialLifecycleTriggers(a),this.persistLocalRuntimeState(),a}getExportedConfig(){return this.getConfiguredExportedConfig()}async validateUiPathResolvers(e={}){await this.refreshExportedConfigSnapshot();let t=this.getConfiguredExportedConfig(),r=Array.isArray(e.uiPaths)?e.uiPaths:Se(t)&&Array.isArray(t.content_ui_paths)?t.content_ui_paths:[],i=e.includeProviderHandlers??true,s=VS(e.resolvers,"validateUiPathResolvers(options.resolvers)"),a={...this.uiPathResolvers,...s};if(i&&this.providerRegistry.has("cta"))try{let l=await this.providerRegistry.resolveAll();Se(l.cta)&&Se(l.cta.handlers)&&Object.assign(a,l.cta.handlers);}catch{}let o=[],p=0;for(let l of r){let x=Se(l)?l:{},I=typeof x.action_type=="string"?x.action_type.trim():"";if(!I){o.push({actionType:"unknown",reason:"missing_action_type",...typeof x.id=="string"?{uiPathId:x.id}:{},...typeof x.name=="string"?{name:x.name}:{}});continue}if(typeof a[I]=="function"){p+=1;continue}o.push({actionType:I,reason:"missing_resolver",...typeof x.id=="string"?{uiPathId:x.id}:{},...typeof x.name=="string"?{name:x.name}:{}});}let v={valid:o.length===0,totalUiPaths:r.length,resolvedUiPaths:p,issues:o};if(!v.valid&&e.throwOnMissing){let l=v.issues.filter(I=>I.reason==="missing_resolver").map(I=>I.actionType),x=l.length>0?` Missing resolver(s) for action_type: ${Array.from(new Set(l)).join(", ")}.`:"";throw new Error(`[RevTurbine] UI path resolver validation failed with ${v.issues.length} issue(s).${x}`)}return v}warnOnUiPathResolverCoverageGaps(){let e=this.getConfiguredExportedConfig(),t=Se(e)&&Array.isArray(e.content_ui_paths)?e.content_ui_paths:[];if(t.length===0)return;let r=[],i=0;for(let o of t){let v=(Se(o)?o:{}).action_type,l=typeof v=="string"?v.trim():"";if(!l){i+=1;continue}typeof this.uiPathResolvers[l]!="function"&&r.push(l);}if(i===0&&r.length===0)return;let s=Array.from(new Set(r)),a=[];s.length>0&&a.push(`missing resolvers for action_type: ${s.join(", ")}`),i>0&&a.push(`content_ui_paths with missing action_type: ${i}`),console.warn(`[RevTurbine] uiPathResolvers coverage gap: ${a.join("; ")}. Affected CTAs will track the click and fall back to onCtaClick until a resolver is supplied.`);}async dismiss(e){await this.emitSemantic("placement_interaction",{interaction_type:"dismiss",payload_id:e,user_id:this.userContext.id??null,interaction_at:new Date().toISOString()},{immediate:false});}async snooze(e,t=3600){await this.emitSemantic("placement_interaction",{interaction_type:"remind_me_later",payload_id:e,user_id:this.userContext.id??null,interaction_at:new Date().toISOString(),remind_after_seconds:t},{immediate:false});}async convert(e){await this.emitSemantic("placement_interaction",{interaction_type:"cta_completed",payload_id:e,user_id:this.userContext.id??null,interaction_at:new Date().toISOString()},{immediate:false});}async emitTrigger(e,t,r){await this.emitSemantic(e,{...t,user_id:this.userContext.id??null,plan_handle:this.userContext.personalization?.plan_name??null,triggered_at:new Date().toISOString(),source:"sdk"},r);}async trackEvent(e,t){await this.capture(e,t??{});}identify(e,t){if(typeof e!="string"||e.trim()===""){console.error("[RevTurbine] identify() requires a non-empty user id; call ignored. Pass your stable internal user id.");return}vF.test(e)&&Nh(`[RevTurbine] identify() received an email-shaped user id ("${e}"). Use an opaque stable id and pass the email as { email } instead.`);let r=this.userContext,i=t!=null&&typeof t=="object"&&!Array.isArray(t)&&("account_id"in t||"email"in t||"plan"in t||"plan_handle"in t||"usage"in t||"entitlements"in t||"custom"in t);if(t!=null&&typeof t=="object"&&!Array.isArray(t)){let s=Object.keys(t).filter(a=>!bF.has(a));s.length>0&&Nh(i?`[RevTurbine] identify() ignoring unrecognized user-context key(s): ${s.join(", ")}. Recognized keys: ${zh.join(", ")}.`:`[RevTurbine] identify() found no recognized user-context key \u2014 treating the object as legacy traits (stored under custom). Keys seen: ${s.join(", ")}; recognized keys: ${zh.join(", ")}. For plan-scoped rules use { plan: { id, name } } or { plan_handle }.`);}if(i){let s=t;s.usage&&(this.usageBalances={...this.usageBalances,...Ts(s.usage)});let a=!s.plan&&typeof s.plan_handle=="string"&&s.plan_handle.trim()!==""?{id:s.plan_handle,name:s.plan_handle}:void 0;this.userContext=this.mergeUserContext({id:e,account_id:s.account_id,email:s.email,plan:s.plan??a,usage:s.usage,entitlements:s.entitlements,custom:a?{plan_handle:a.id,...s.custom??{}}:s.custom,personalization:s.personalization});}else this.userContext=this.mergeUserContext({id:e,custom:t,usage:{}});this.recalculateDerivedUsageTraits(),this.markSegmentsDirtyFromContextChange(r,this.userContext),this.decisionCache.clear(),this.persistDecisionCache(),this.persistLocalRuntimeState(),this.impressionHistory.setUserId(e),this.impressionHistory.hydrate(),this.emitObservedContextFields(i?t.custom:t);}resetIdentity(){this.clearAllUserState({reinfer:true});}resetUserContext(){this.clearAllUserState({reinfer:false});}clearAllUserState({reinfer:e}){let t=this.userContext;this.userContext={usage:{},...e&&this.policy.inferUser?qS():{},id:void 0,custom:{},entitlements:{},personalization:{}},this.usageBalances={},this.recalculateDerivedUsageTraits(),this.markSegmentsDirtyFromContextChange(t,this.userContext),this.decisionCache.clear(),this.interactionState.clear(),this.persistDecisionCache(),this.persistInteractionState(),this.persistLocalRuntimeState(),this.impressionHistory.setUserId(this.anonymousId),this.impressionHistory.hydrate();}can(e,t){return this.checkEntitlement(e,t)}async gate(e,t,r){this.emitSemantic("gate_attempted",{entitlement_handle:e},{immediate:false});let i=await this.checkEntitlement(e,r);return i.allowed?(this.emitSemantic("gate_allowed",{entitlement_handle:e},{immediate:false}),{ran:true,result:await t(),entitlement:i}):(this.emitSemantic("gate_denied",{entitlement_handle:e,reason:i.reason??null},{immediate:false}),{ran:false,entitlement:i})}track(e,t){return this.trackEvent(e,t)}update(e){let{usage:t,...r}=e??{},i=Object.entries(r).filter(([a])=>LS.has(a)),s=Object.keys(r).filter(a=>!LS.has(a));s.length>0&&Nh(`[RevTurbine] update() ignored unrecognized key(s): ${s.join(", ")}. Patchable fields: ${MS.join(", ")}. A bare entitlement handle is not a usage report \u2014 use update({ usage: { <unit>: n } }); to (re)establish identity use identify().`),i.length>0&&this.setUserContext(Object.fromEntries(i)),t&&this.updateUsage(t);}reset(){this.resetIdentity();}onRouteChange(e){this.setPageContext({url:`${Mr()?window.location.origin:""}${e.path}`,title:e.title,tags:e.tags}),this.capture("page_view",{source:"router_auto_track",path:e.path});}};k(yd,"RESOLUTION_DIAGNOSTIC_SESSION_CAP",20);var Wh=yd;function zS(n){let e=MF(n),t=new Wh(e);if(!e.provider)return t;let r=(l,x)=>{try{return typeof l=="function"?l(e):l}catch(I){return console.warn(`[RevTurbine] Provider factory failed at chain index ${x}.`,I),null}},i=[r(e.provider,0),...(e.providerFallbacks??[]).map((l,x)=>r(l,x+1))].filter(l=>l!==null);if(i.length===0)return t.disableForProviderFailure("provider_factory_chain_failed"),t;let s=async(l,x,I)=>{let C=[];for(let S=0;S<i.length;S+=1){let G=i[S][l];if(G){C.push(S);try{return await G(...x)}catch(re){let Re=i.slice(S+1).some(we=>typeof we[l]=="function");console.warn(S===0&&Re?`[RevTurbine] Primary provider ${l} failed; trying configured fallbacks.`:`[RevTurbine] Provider ${l} failed at chain index ${S}.`,re);}}}return C.length===0||t.disableForProviderFailure(`provider_${l}_chain_failed`),I()},a=t.getPlacement.bind(t),o=t.checkEntitlement.bind(t),p=t.persistPlacementTypes.bind(t),v=t.identify.bind(t);return t.getPlacement=async l=>s("getPlacement",[l],()=>a(l)),t.checkEntitlement=async(l,x)=>s("checkEntitlement",[l,x],()=>o(l,x)),t.persistPlacementTypes=async l=>s("persistPlacementTypes",[l],()=>p(l)),t.identify=(l,x)=>{let I=0;for(let C=0;C<i.length;C+=1){let S=i[C];if(S.identify){I+=1;try{S.identify(l,x);return}catch(V){let G=i.slice(C+1).some(re=>typeof re.identify=="function");console.warn(C===0&&G?"[RevTurbine] Primary provider identify failed; trying configured fallbacks.":`[RevTurbine] Provider identify failed at chain index ${C}.`,V);}}}if(I>0){t.disableForProviderFailure("provider_identify_chain_failed"),v(l,x);return}v(l,x);},t}var um={tenantId:"local",apiKey:"local-only",endpoint:"https://api.revturbine.local",mode:"react"};function Hh(n){return typeof n=="string"&&n.trim().length>0}function MF(n){return Xh(n.localRuntime)!==void 0?{...n,tenantId:Hh(n.tenantId)?n.tenantId:um.tenantId,apiKey:Hh(n.apiKey)?n.apiKey:um.apiKey,endpoint:Hh(n.endpoint)?n.endpoint:um.endpoint,mode:n.mode??um.mode,runtimeMode:n.runtimeMode??"local_only"}:n}function NF(n){if(!Se(n))return null;let e=(p,v)=>String(p??"").trim().slice(0,v),t=e(n.id,256),r=e(n.label,256),i=e(n.description,1024),s=e(n.surfaceType,64);if(!t||!r||!i||!DS.has(s))return null;let a=Number(n.priority),o=Number.isFinite(a)?Math.max(0,Math.floor(a)):0;return {id:t,label:r,description:i,surfaceType:s,priority:o}}typeof window<"u"&&(window.RevTurbine={init:zS});function KS(n){return n!==null&&(n.status==="denied"||n.allowed===false)}var $S={result:null,allowed:false,limited:false,denied:true,gatedPlacement:null};function KF(n){return {placementId:n,visible:false,decision:null,content:null}}function GS(n,e=null){return n===null?$S:{result:n,allowed:n.status==="allowed",limited:n.status==="limited",denied:KS(n),gatedPlacement:e}}var xd,Sd,Ll,Qh=class{constructor(e){k(this,"tenantId");k(this,"transport");Id(this,xd);Id(this,Sd);Id(this,Ll);if(this.tenantId=e.tenantId,Pd(this,Sd,e.environmentId??"default"),Pd(this,xd,e.playbook),this.transport=e.transport??(e.playbook?"local":"remote"),this.transport==="local"&&!e.playbook)throw new Error("[RevTurbine] createServerClient: local transport requires a `playbook`. Pass one, or configure `endpoint` + `apiToken` for remote mode.");if(this.transport==="remote"){if(!e.endpoint||!e.apiToken)throw new Error("[RevTurbine] createServerClient: remote transport requires both `endpoint` and `apiToken`.");Pd(this,Ll,new _c({tenantId:e.tenantId,apiKey:e.apiToken,endpoint:e.endpoint}));}}runtimeFor(e){let t=Ls(Vl(this,xd),"createServerClient.playbook",{tenantId:this.tenantId,environmentId:Vl(this,Sd)});if(!t)throw new Error("[RevTurbine] server client has no resolvable Playbook");return new G_({tenantId:this.tenantId,userId:e.id,exportedConfig:t,providers:K_({config:t,planHandle:e.planHandle})})}async _entitlement(e,t,r){try{if(this.transport==="remote"){let i=await Vl(this,Ll).checkEntitlement(t.id,e,r);return GS(i)}return GS(await this.runtimeFor(t).checkEntitlement(e,r))}catch{return $S}}async _placement(e,t){try{if(this.transport==="remote"){let i=await Vl(this,Ll).getPlacement(t.id,{slotId:e},t.traits);return {placementId:e,visible:i.visible??!1,decision:null,content:null}}let r=await this.runtimeFor(t).getPlacementDecision({placementId:e,userId:t.id,traits:t.traits});return {placementId:e,visible:r.visible,decision:r,content:r.content??null}}catch{return KF(e)}}};xd=new WeakMap,Sd=new WeakMap,Ll=new WeakMap;function J8(n){return new Qh(n)}function Q8(n,e,t){return n._entitlement(e,t.user,t.context)}function eG(n,e){return n._placement(e.placementId,e.user)}
2
+ export{Qh as RevTurbineServerClient,J8 as createServerClient,Q8 as getEntitlement,eG as getPlacement};//# sourceMappingURL=server.js.map
3
+ //# sourceMappingURL=server.js.map