import * as av from "anyvali"; import type { Infer } from "anyvali"; export { BetterPortalRouteChromeSchema, BetterPortalRouteChromeValueSchema } from "./chrome.js"; export type { BetterPortalRouteChrome, BetterPortalRouteChromeValue } from "./chrome.js"; export declare const BetterPortalBrandingSchema: av.ObjectSchema<{ brandName: av.OptionalSchema; logoUrl: av.OptionalSchema; primaryColor: av.OptionalSchema; secondaryColor: av.OptionalSchema; }>; export type BetterPortalBranding = Infer; export declare const BetterPortalThemeBootstrapPaletteSchema: av.ObjectSchema<{ primary: av.OptionalSchema; secondary: av.OptionalSchema; success: av.OptionalSchema; info: av.OptionalSchema; warning: av.OptionalSchema; danger: av.OptionalSchema; light: av.OptionalSchema; dark: av.OptionalSchema; }>; export type BetterPortalThemeBootstrapPalette = Infer; export declare const BetterPortalThemeSurfaceSchema: av.ObjectSchema<{ background: av.OptionalSchema; surface: av.OptionalSchema; surfaceAlt: av.OptionalSchema; text: av.OptionalSchema; textSoft: av.OptionalSchema; border: av.OptionalSchema; accentSoft: av.OptionalSchema; }>; export type BetterPortalThemeSurface = Infer; export declare const BetterPortalThemeConfigSchema: av.ObjectSchema<{ brandName: av.OptionalSchema; mode: av.EnumSchema; bootstrap: av.ObjectSchema<{ primary: av.OptionalSchema; secondary: av.OptionalSchema; success: av.OptionalSchema; info: av.OptionalSchema; warning: av.OptionalSchema; danger: av.OptionalSchema; light: av.OptionalSchema; dark: av.OptionalSchema; }>; light: av.ObjectSchema<{ background: av.OptionalSchema; surface: av.OptionalSchema; surfaceAlt: av.OptionalSchema; text: av.OptionalSchema; textSoft: av.OptionalSchema; border: av.OptionalSchema; accentSoft: av.OptionalSchema; }>; dark: av.ObjectSchema<{ background: av.OptionalSchema; surface: av.OptionalSchema; surfaceAlt: av.OptionalSchema; text: av.OptionalSchema; textSoft: av.OptionalSchema; border: av.OptionalSchema; accentSoft: av.OptionalSchema; }>; }>; export type BetterPortalThemeConfig = Infer; export declare const TenantServiceRegistrationSchema: av.ObjectSchema<{ id: av.StringSchema; hostname: av.StringSchema; apiKeyHash: av.StringSchema; publicKeyPem: av.OptionalSchema; keyId: av.OptionalSchema; serviceId: av.OptionalSchema; authProvider: av.OptionalSchema; use: av.LiteralSchema<"sig">; alg: av.LiteralSchema<"RS256">; kid: av.StringSchema; n: av.StringSchema; e: av.StringSchema; }>>; }>>; }>>; capabilities: av.ArraySchema; title: av.OptionalSchema; description: av.OptionalSchema; deploymentMode: av.EnumSchema; createdAt: av.StringSchema; lastSeenAt: av.OptionalSchema; enabled: av.BoolSchema; }>; export type TenantServiceRegistration = Infer; export declare const BetterPortalAppShellSchema: av.ObjectSchema<{ serviceId: av.StringSchema; }>; export type BetterPortalAppShell = Infer; export declare const PlatformServiceSchema: av.ObjectSchema<{ id: av.StringSchema; hostname: av.StringSchema; apiKeyHash: av.StringSchema; publicKeyPem: av.OptionalSchema; keyId: av.OptionalSchema; serviceId: av.OptionalSchema; authProvider: av.OptionalSchema; use: av.LiteralSchema<"sig">; alg: av.LiteralSchema<"RS256">; kid: av.StringSchema; n: av.StringSchema; e: av.StringSchema; }>>; }>>; }>>; capabilities: av.ArraySchema; title: av.StringSchema; description: av.OptionalSchema; category: av.OptionalSchema; createdAt: av.StringSchema; enabled: av.BoolSchema; }>; export type PlatformService = Infer; export declare const BetterPortalTenantSchema: av.ObjectSchema<{ id: av.StringSchema; slug: av.StringSchema; title: av.StringSchema; active: av.BoolSchema; branding: av.ObjectSchema<{ brandName: av.OptionalSchema; logoUrl: av.OptionalSchema; primaryColor: av.OptionalSchema; secondaryColor: av.OptionalSchema; }>; services: av.ArraySchema; keyId: av.OptionalSchema; serviceId: av.OptionalSchema; authProvider: av.OptionalSchema; use: av.LiteralSchema<"sig">; alg: av.LiteralSchema<"RS256">; kid: av.StringSchema; n: av.StringSchema; e: av.StringSchema; }>>; }>>; }>>; capabilities: av.ArraySchema; title: av.OptionalSchema; description: av.OptionalSchema; deploymentMode: av.EnumSchema; createdAt: av.StringSchema; lastSeenAt: av.OptionalSchema; enabled: av.BoolSchema; }>>; activatedPlatformServices: av.ArraySchema; }>; export type BetterPortalTenant = Infer; export declare const BetterPortalRouteMountSchema: av.ObjectSchema<{ id: av.StringSchema; kind: av.EnumSchema; path: av.StringSchema; serviceId: av.StringSchema; viewId: av.StringSchema; /** Selected service path when a view exposes more than one path variant. */ servicePathVariant: av.OptionalSchema; /** Values supplied to service path params that are not present in the app path. */ fixedParams: av.OptionalSchema>; /** Manifest-derived SEO metadata injected by the control plane. */ authRequired: av.OptionalSchema; sitemap: av.OptionalSchema; lastModified: av.OptionalSchema; changeFrequency: av.OptionalSchema>; priority: av.OptionalSchema; }>>; robots: av.OptionalSchema; crawlDelaySeconds: av.OptionalSchema; }>>>; /** @deprecated Use resolvedServicePath (CP-injected). Kept one release for migration. */ targetPath: av.OptionalSchema; /** Service path resolved by control plane from manifest cache. Injected on sync delivery. */ resolvedServicePath: av.OptionalSchema; /** HTTP methods resolved from selected operation ids. Injected on sync delivery. */ resolvedMethods: av.OptionalSchema>>; /** Optional query string appended to service request. */ query: av.OptionalSchema; title: av.OptionalSchema; icon: av.OptionalSchema; enabled: av.BoolSchema; enablement: av.OptionalSchema>; operations: av.ArraySchema; chrome: av.OptionalSchema; hideHeader: av.OptionalSchema; hideFooter: av.OptionalSchema; fullScreen: av.OptionalSchema; }>, av.RecordSchema>]>>; }>; export type BetterPortalRouteMount = Infer; export declare const BetterPortalSeoConfigSchema: av.ObjectSchema<{ visibility: av.EnumSchema; serviceFailure: av.EnumSchema; serviceCache: av.EnumSchema; canonicalOrigin: av.OptionalSchema; }>; export type BetterPortalSeoConfig = Infer; export interface BetterPortalMenuItem { id: string; type: "link" | "group" | "section" | "divider" | "external"; title?: string; icon?: string; routeId?: string; href?: string; enabled: boolean; serviceStatus: "show" | "hide"; authStatus: "show" | "hide-unauthenticated" | "hide-unauthorized"; defaultExpanded?: boolean; children: BetterPortalMenuItem[]; } export declare const BETTERPORTAL_MENU_MAX_DEPTH = 32; export declare const BetterPortalMenuItemSchema: av.BaseSchema; export declare const BetterPortalSlotAssignmentSchema: av.ObjectSchema<{ slotId: av.StringSchema; serviceId: av.StringSchema; viewId: av.StringSchema; renderer: av.OptionalSchema; enabled: av.BoolSchema; }>; export type BetterPortalSlotAssignment = Infer; export declare const BetterPortalFragmentAssignmentSchema: av.ObjectSchema<{ serviceId: av.StringSchema; fragmentId: av.StringSchema; targetPath: av.StringSchema; enabled: av.BoolSchema; }>; export type BetterPortalFragmentAssignment = Infer; export declare const BetterPortalShellFragmentItemSchema: av.UnionSchema<[av.ObjectSchema<{ source: av.LiteralSchema<"shell">; fragmentId: av.StringSchema; }>, av.ObjectSchema<{ source: av.LiteralSchema<"service">; serviceId: av.StringSchema; fragmentId: av.StringSchema; targetPath: av.StringSchema; }>]>; export type BetterPortalShellFragmentItem = Infer; export declare const BetterPortalShellFragmentSettingSchema: av.UnionSchema<[av.ObjectSchema<{ mode: av.LiteralSchema<"none">; }>, av.ObjectSchema<{ mode: av.LiteralSchema<"override">; item: av.UnionSchema<[av.ObjectSchema<{ source: av.LiteralSchema<"shell">; fragmentId: av.StringSchema; }>, av.ObjectSchema<{ source: av.LiteralSchema<"service">; serviceId: av.StringSchema; fragmentId: av.StringSchema; targetPath: av.StringSchema; }>]>; }>, av.ObjectSchema<{ mode: av.LiteralSchema<"items">; items: av.ArraySchema; fragmentId: av.StringSchema; }>, av.ObjectSchema<{ source: av.LiteralSchema<"service">; serviceId: av.StringSchema; fragmentId: av.StringSchema; targetPath: av.StringSchema; }>]>>; }>]>; export type BetterPortalShellFragmentSetting = Infer; export declare const BetterPortalAppSchema: av.ObjectSchema<{ id: av.StringSchema; tenantId: av.StringSchema; slug: av.StringSchema; title: av.StringSchema; hostnames: av.ArraySchema; originOverrides: av.ArraySchema; refererOverrides: av.ArraySchema; shell: av.OptionalSchema>; themeConfig: av.ObjectSchema<{ brandName: av.OptionalSchema; mode: av.EnumSchema; bootstrap: av.ObjectSchema<{ primary: av.OptionalSchema; secondary: av.OptionalSchema; success: av.OptionalSchema; info: av.OptionalSchema; warning: av.OptionalSchema; danger: av.OptionalSchema; light: av.OptionalSchema; dark: av.OptionalSchema; }>; light: av.ObjectSchema<{ background: av.OptionalSchema; surface: av.OptionalSchema; surfaceAlt: av.OptionalSchema; text: av.OptionalSchema; textSoft: av.OptionalSchema; border: av.OptionalSchema; accentSoft: av.OptionalSchema; }>; dark: av.ObjectSchema<{ background: av.OptionalSchema; surface: av.OptionalSchema; surfaceAlt: av.OptionalSchema; text: av.OptionalSchema; textSoft: av.OptionalSchema; border: av.OptionalSchema; accentSoft: av.OptionalSchema; }>; }>; layoutId: av.OptionalSchema; defaultRoute: av.StringSchema; seo: av.OptionalSchema; serviceFailure: av.EnumSchema; serviceCache: av.EnumSchema; canonicalOrigin: av.OptionalSchema; }>>; routes: av.ArraySchema; path: av.StringSchema; serviceId: av.StringSchema; viewId: av.StringSchema; /** Selected service path when a view exposes more than one path variant. */ servicePathVariant: av.OptionalSchema; /** Values supplied to service path params that are not present in the app path. */ fixedParams: av.OptionalSchema>; /** Manifest-derived SEO metadata injected by the control plane. */ authRequired: av.OptionalSchema; sitemap: av.OptionalSchema; lastModified: av.OptionalSchema; changeFrequency: av.OptionalSchema>; priority: av.OptionalSchema; }>>; robots: av.OptionalSchema; crawlDelaySeconds: av.OptionalSchema; }>>>; /** @deprecated Use resolvedServicePath (CP-injected). Kept one release for migration. */ targetPath: av.OptionalSchema; /** Service path resolved by control plane from manifest cache. Injected on sync delivery. */ resolvedServicePath: av.OptionalSchema; /** HTTP methods resolved from selected operation ids. Injected on sync delivery. */ resolvedMethods: av.OptionalSchema>>; /** Optional query string appended to service request. */ query: av.OptionalSchema; title: av.OptionalSchema; icon: av.OptionalSchema; enabled: av.BoolSchema; enablement: av.OptionalSchema>; operations: av.ArraySchema; chrome: av.OptionalSchema; hideHeader: av.OptionalSchema; hideFooter: av.OptionalSchema; fullScreen: av.OptionalSchema; }>, av.RecordSchema>]>>; }>>; menu: av.ArraySchema>; slots: av.ArraySchema; enabled: av.BoolSchema; }>>; fragments: av.RecordSchema>>; /** Shell service instance UUID -> shell fragment id -> explicit setting. Missing means shell default. */ shellFragments: av.RecordSchema; }>, av.ObjectSchema<{ mode: av.LiteralSchema<"override">; item: av.UnionSchema<[av.ObjectSchema<{ source: av.LiteralSchema<"shell">; fragmentId: av.StringSchema; }>, av.ObjectSchema<{ source: av.LiteralSchema<"service">; serviceId: av.StringSchema; fragmentId: av.StringSchema; targetPath: av.StringSchema; }>]>; }>, av.ObjectSchema<{ mode: av.LiteralSchema<"items">; items: av.ArraySchema; fragmentId: av.StringSchema; }>, av.ObjectSchema<{ source: av.LiteralSchema<"service">; serviceId: av.StringSchema; fragmentId: av.StringSchema; targetPath: av.StringSchema; }>]>>; }>]>>>; auth: av.OptionalSchema; }>, av.ObjectSchema<{ kind: av.LiteralSchema<"authress.io">; roleClaimPath: av.StringSchema; subjectClaimPath: av.StringSchema; nameClaimPath: av.OptionalSchema; emailClaimPath: av.OptionalSchema; pictureClaimPath: av.OptionalSchema; }>]>>; roleAuthority: av.OptionalSchema>; loginViewId: av.OptionalSchema; logoutViewId: av.OptionalSchema; refreshViewId: av.OptionalSchema; redirects: av.OptionalSchema>; afterLogout: av.OptionalSchema>; }>>; expectedIssuer: av.StringSchema; expectedAudience: av.StringSchema; jwksUri: av.StringSchema; publicKeys: av.OptionalSchema; use: av.LiteralSchema<"sig">; alg: av.LiteralSchema<"RS256">; kid: av.StringSchema; n: av.StringSchema; e: av.StringSchema; }>>; }>>; roles: av.ArraySchema; permissions: av.ArraySchema>; }>>; }>>; }>>; statusViewIds: av.OptionalSchema>; }>; export type BetterPortalApp = Infer; export interface BetterPortalResolvedShell { readonly serviceId: string; readonly service: string; readonly renderer: string; } export type BetterPortalResolvedApp = Omit & { readonly shell?: BetterPortalResolvedShell; /** Full application route index supplied to scoped services for cross-service lookup. */ readonly appRoutes?: ReadonlyArray; /** Full application fragment index supplied to scoped services for cross-service lookup. */ readonly appFragments?: BetterPortalApp["fragments"]; }; export declare const BetterPortalConfigManagementAuthSchema: av.ObjectSchema<{ mechanism: av.EnumSchema; issuer: av.OptionalSchema; audience: av.OptionalSchema; requiredPermissions: av.ArraySchema; }>; export type BetterPortalConfigManagementAuth = Infer; export declare const BetterPortalConfigManagementSchema: av.ObjectSchema<{ adminTenantId: av.OptionalSchema; managementAppId: av.OptionalSchema; auth: av.ObjectSchema<{ mechanism: av.EnumSchema; issuer: av.OptionalSchema; audience: av.OptionalSchema; requiredPermissions: av.ArraySchema; }>; }>; export type BetterPortalConfigManagement = Infer; export declare const SharedServiceDefinitionSchema: av.ObjectSchema<{ id: av.StringSchema; serviceId: av.OptionalSchema; title: av.StringSchema; description: av.OptionalSchema; logoUrl: av.OptionalSchema; baseUrl: av.StringSchema; apiKeyHash: av.StringSchema; publicKeyPem: av.OptionalSchema; keyId: av.OptionalSchema; authProvider: av.OptionalSchema; use: av.LiteralSchema<"sig">; alg: av.LiteralSchema<"RS256">; kid: av.StringSchema; n: av.StringSchema; e: av.StringSchema; }>>; }>>; }>>; supportedDeploymentModes: av.ArraySchema>; owner: av.EnumSchema; upgradeUrlTemplate: av.OptionalSchema; category: av.OptionalSchema; tags: av.ArraySchema; pricingHint: av.OptionalSchema>; publishedAt: av.OptionalSchema; enabled: av.BoolSchema; }>; export type SharedServiceDefinition = Infer; export declare const TenantSharedServiceActivationSchema: av.ObjectSchema<{ id: av.StringSchema; tenantId: av.StringSchema; appId: av.OptionalSchema; sharedServiceId: av.StringSchema; activatedAt: av.StringSchema; enabled: av.BoolSchema; }>; export type TenantSharedServiceActivation = Infer; export declare const M2MBindingSchema: av.ObjectSchema<{ id: av.StringSchema; tenantId: av.StringSchema; appId: av.OptionalSchema; sourceServiceId: av.StringSchema; requestId: av.StringSchema; contractId: av.StringSchema; targetServiceId: av.StringSchema; targetViewId: av.StringSchema; mode: av.EnumSchema; enabled: av.BoolSchema; createdAt: av.StringSchema; }>; export type M2MBinding = Infer; export declare const M2MGrantSchema: av.ObjectSchema<{ id: av.StringSchema; tenantId: av.StringSchema; appId: av.OptionalSchema; bindingId: av.StringSchema; methods: av.ArraySchema>; permissions: av.ArraySchema; enabled: av.BoolSchema; createdAt: av.StringSchema; }>; export type M2MGrant = Infer; export declare const M2MConfigSchema: av.ObjectSchema<{ bindings: av.ArraySchema; sourceServiceId: av.StringSchema; requestId: av.StringSchema; contractId: av.StringSchema; targetServiceId: av.StringSchema; targetViewId: av.StringSchema; mode: av.EnumSchema; enabled: av.BoolSchema; createdAt: av.StringSchema; }>>; grants: av.ArraySchema; bindingId: av.StringSchema; methods: av.ArraySchema>; permissions: av.ArraySchema; enabled: av.BoolSchema; createdAt: av.StringSchema; }>>; }>; export type M2MConfig = Infer; export declare const ServiceManifestCacheEntrySchema: av.ObjectSchema<{ serviceId: av.StringSchema; manifestVersion: av.StringSchema; fetchedAt: av.StringSchema; title: av.OptionalSchema; authProvider: av.OptionalSchema; use: av.LiteralSchema<"sig">; alg: av.LiteralSchema<"RS256">; kid: av.StringSchema; n: av.StringSchema; e: av.StringSchema; }>>; }>>; }>>; capabilities: av.ArraySchema; m2mRequests: av.ArraySchema; contractId: av.StringSchema; version: av.OptionalSchema; requiredCapabilities: av.ArraySchema; methods: av.ArraySchema>; permissions: av.ArraySchema; mode: av.EnumSchema; optional: av.BoolSchema; }>>; apiContracts: av.ArraySchema; version: av.StringSchema; viewId: av.StringSchema; methods: av.ArraySchema>; capabilities: av.ArraySchema; permissions: av.ArraySchema; modes: av.ArraySchema>; }>>; developerResources: av.ArraySchema; title: av.StringSchema; description: av.OptionalSchema; mediaType: av.StringSchema; language: av.OptionalSchema; content: av.StringSchema; }>>; configSchemas: av.ArraySchema; jsonSchema: av.BaseSchema; groups: av.OptionalSchema; order: av.OptionalSchema; optional: av.OptionalSchema; }>>>; fields: av.ArraySchema; visibility: av.EnumSchema; ownership: av.EnumSchema; sourceOfTruth: av.EnumSchema; groupId: av.OptionalSchema; order: av.OptionalSchema; defaultValue: av.OptionalSchema>; ui: av.OptionalSchema>; placeholder: av.OptionalSchema; options: av.OptionalSchema>>; optionsSource: av.OptionalSchema>; min: av.OptionalSchema>; max: av.OptionalSchema>; step: av.OptionalSchema; rows: av.OptionalSchema; }>>; required: av.BoolSchema; }>>; }>>; webhooks: av.ArraySchema; payloadSchema: av.BaseSchema; }>>; shell: av.OptionalSchema; title: av.StringSchema; description: av.StringSchema; defaultItems: av.ArraySchema; }>>; }>>; viewIndex: av.RecordSchema; paramsSchema: av.OptionalSchema>; operations: av.ArraySchema; title: av.StringSchema; description: av.StringSchema; renderers: av.ArraySchema; renderModes: av.ArraySchema>; role: av.OptionalSchema; authRequired: av.BoolSchema; sitemap: av.OptionalSchema; lastModified: av.OptionalSchema; changeFrequency: av.OptionalSchema>; priority: av.OptionalSchema; }>>; robots: av.ArraySchema; crawlDelaySeconds: av.OptionalSchema; }>>; chrome: av.OptionalSchema; hideHeader: av.OptionalSchema; hideFooter: av.OptionalSchema; fullScreen: av.OptionalSchema; }>, av.RecordSchema>]>>; dependencies: av.ArraySchema; operationId: av.StringSchema; method: av.EnumSchema; }>>; permissions: av.ArraySchema; }>>; renderable: av.BoolSchema; schemas: av.OptionalSchema>; headers: av.OptionalSchema>; request: av.OptionalSchema>; multipart: av.OptionalSchema>; response: av.OptionalSchema>; }>>; raw: av.OptionalSchema; apiContracts: av.ArraySchema; version: av.StringSchema; viewId: av.StringSchema; methods: av.ArraySchema>; capabilities: av.ArraySchema; permissions: av.ArraySchema; modes: av.ArraySchema>; }>>; demoScenarios: av.ArraySchema; match: av.OptionalSchema>; params: av.OptionalSchema>; headers: av.OptionalSchema>; request: av.OptionalSchema>; }>>; response: av.BaseSchema; }>>; }>>; fragments: av.ArraySchema; }>>; }>>; }>; export type ServiceManifestCacheEntry = Infer; export declare const WebhookTargetSchema: av.ObjectSchema<{ id: av.StringSchema; tenantId: av.StringSchema; appId: av.OptionalSchema; serviceId: av.StringSchema; eventId: av.StringSchema; url: av.StringSchema; secret: av.StringSchema; createdAt: av.StringSchema; enabled: av.BoolSchema; maxAttempts: av.IntSchema; }>; export type WebhookTarget = Infer; export declare const BetterPortalConfigSchema: av.ObjectSchema<{ configManagement: av.ObjectSchema<{ adminTenantId: av.OptionalSchema; managementAppId: av.OptionalSchema; auth: av.ObjectSchema<{ mechanism: av.EnumSchema; issuer: av.OptionalSchema; audience: av.OptionalSchema; requiredPermissions: av.ArraySchema; }>; }>; platformServices: av.ArraySchema; keyId: av.OptionalSchema; serviceId: av.OptionalSchema; authProvider: av.OptionalSchema; use: av.LiteralSchema<"sig">; alg: av.LiteralSchema<"RS256">; kid: av.StringSchema; n: av.StringSchema; e: av.StringSchema; }>>; }>>; }>>; capabilities: av.ArraySchema; title: av.StringSchema; description: av.OptionalSchema; category: av.OptionalSchema; createdAt: av.StringSchema; enabled: av.BoolSchema; }>>; tenants: av.ArraySchema; logoUrl: av.OptionalSchema; primaryColor: av.OptionalSchema; secondaryColor: av.OptionalSchema; }>; services: av.ArraySchema; keyId: av.OptionalSchema; serviceId: av.OptionalSchema; authProvider: av.OptionalSchema; use: av.LiteralSchema<"sig">; alg: av.LiteralSchema<"RS256">; kid: av.StringSchema; n: av.StringSchema; e: av.StringSchema; }>>; }>>; }>>; capabilities: av.ArraySchema; title: av.OptionalSchema; description: av.OptionalSchema; deploymentMode: av.EnumSchema; createdAt: av.StringSchema; lastSeenAt: av.OptionalSchema; enabled: av.BoolSchema; }>>; activatedPlatformServices: av.ArraySchema; }>>; apps: av.ArraySchema; originOverrides: av.ArraySchema; refererOverrides: av.ArraySchema; shell: av.OptionalSchema>; themeConfig: av.ObjectSchema<{ brandName: av.OptionalSchema; mode: av.EnumSchema; bootstrap: av.ObjectSchema<{ primary: av.OptionalSchema; secondary: av.OptionalSchema; success: av.OptionalSchema; info: av.OptionalSchema; warning: av.OptionalSchema; danger: av.OptionalSchema; light: av.OptionalSchema; dark: av.OptionalSchema; }>; light: av.ObjectSchema<{ background: av.OptionalSchema; surface: av.OptionalSchema; surfaceAlt: av.OptionalSchema; text: av.OptionalSchema; textSoft: av.OptionalSchema; border: av.OptionalSchema; accentSoft: av.OptionalSchema; }>; dark: av.ObjectSchema<{ background: av.OptionalSchema; surface: av.OptionalSchema; surfaceAlt: av.OptionalSchema; text: av.OptionalSchema; textSoft: av.OptionalSchema; border: av.OptionalSchema; accentSoft: av.OptionalSchema; }>; }>; layoutId: av.OptionalSchema; defaultRoute: av.StringSchema; seo: av.OptionalSchema; serviceFailure: av.EnumSchema; serviceCache: av.EnumSchema; canonicalOrigin: av.OptionalSchema; }>>; routes: av.ArraySchema; path: av.StringSchema; serviceId: av.StringSchema; viewId: av.StringSchema; /** Selected service path when a view exposes more than one path variant. */ servicePathVariant: av.OptionalSchema; /** Values supplied to service path params that are not present in the app path. */ fixedParams: av.OptionalSchema>; /** Manifest-derived SEO metadata injected by the control plane. */ authRequired: av.OptionalSchema; sitemap: av.OptionalSchema; lastModified: av.OptionalSchema; changeFrequency: av.OptionalSchema>; priority: av.OptionalSchema; }>>; robots: av.OptionalSchema; crawlDelaySeconds: av.OptionalSchema; }>>>; /** @deprecated Use resolvedServicePath (CP-injected). Kept one release for migration. */ targetPath: av.OptionalSchema; /** Service path resolved by control plane from manifest cache. Injected on sync delivery. */ resolvedServicePath: av.OptionalSchema; /** HTTP methods resolved from selected operation ids. Injected on sync delivery. */ resolvedMethods: av.OptionalSchema>>; /** Optional query string appended to service request. */ query: av.OptionalSchema; title: av.OptionalSchema; icon: av.OptionalSchema; enabled: av.BoolSchema; enablement: av.OptionalSchema>; operations: av.ArraySchema; chrome: av.OptionalSchema; hideHeader: av.OptionalSchema; hideFooter: av.OptionalSchema; fullScreen: av.OptionalSchema; }>, av.RecordSchema>]>>; }>>; menu: av.ArraySchema>; slots: av.ArraySchema; enabled: av.BoolSchema; }>>; fragments: av.RecordSchema>>; /** Shell service instance UUID -> shell fragment id -> explicit setting. Missing means shell default. */ shellFragments: av.RecordSchema; }>, av.ObjectSchema<{ mode: av.LiteralSchema<"override">; item: av.UnionSchema<[av.ObjectSchema<{ source: av.LiteralSchema<"shell">; fragmentId: av.StringSchema; }>, av.ObjectSchema<{ source: av.LiteralSchema<"service">; serviceId: av.StringSchema; fragmentId: av.StringSchema; targetPath: av.StringSchema; }>]>; }>, av.ObjectSchema<{ mode: av.LiteralSchema<"items">; items: av.ArraySchema; fragmentId: av.StringSchema; }>, av.ObjectSchema<{ source: av.LiteralSchema<"service">; serviceId: av.StringSchema; fragmentId: av.StringSchema; targetPath: av.StringSchema; }>]>>; }>]>>>; auth: av.OptionalSchema; }>, av.ObjectSchema<{ kind: av.LiteralSchema<"authress.io">; roleClaimPath: av.StringSchema; subjectClaimPath: av.StringSchema; nameClaimPath: av.OptionalSchema; emailClaimPath: av.OptionalSchema; pictureClaimPath: av.OptionalSchema; }>]>>; roleAuthority: av.OptionalSchema>; loginViewId: av.OptionalSchema; logoutViewId: av.OptionalSchema; refreshViewId: av.OptionalSchema; redirects: av.OptionalSchema>; afterLogout: av.OptionalSchema>; }>>; expectedIssuer: av.StringSchema; expectedAudience: av.StringSchema; jwksUri: av.StringSchema; publicKeys: av.OptionalSchema; use: av.LiteralSchema<"sig">; alg: av.LiteralSchema<"RS256">; kid: av.StringSchema; n: av.StringSchema; e: av.StringSchema; }>>; }>>; roles: av.ArraySchema; permissions: av.ArraySchema>; }>>; }>>; }>>; statusViewIds: av.OptionalSchema>; }>>; sharedServiceCatalog: av.ArraySchema; title: av.StringSchema; description: av.OptionalSchema; logoUrl: av.OptionalSchema; baseUrl: av.StringSchema; apiKeyHash: av.StringSchema; publicKeyPem: av.OptionalSchema; keyId: av.OptionalSchema; authProvider: av.OptionalSchema; use: av.LiteralSchema<"sig">; alg: av.LiteralSchema<"RS256">; kid: av.StringSchema; n: av.StringSchema; e: av.StringSchema; }>>; }>>; }>>; supportedDeploymentModes: av.ArraySchema>; owner: av.EnumSchema; upgradeUrlTemplate: av.OptionalSchema; category: av.OptionalSchema; tags: av.ArraySchema; pricingHint: av.OptionalSchema>; publishedAt: av.OptionalSchema; enabled: av.BoolSchema; }>>; sharedServiceActivations: av.ArraySchema; sharedServiceId: av.StringSchema; activatedAt: av.StringSchema; enabled: av.BoolSchema; }>>; manifestCache: av.ArraySchema; authProvider: av.OptionalSchema; use: av.LiteralSchema<"sig">; alg: av.LiteralSchema<"RS256">; kid: av.StringSchema; n: av.StringSchema; e: av.StringSchema; }>>; }>>; }>>; capabilities: av.ArraySchema; m2mRequests: av.ArraySchema; contractId: av.StringSchema; version: av.OptionalSchema; requiredCapabilities: av.ArraySchema; methods: av.ArraySchema>; permissions: av.ArraySchema; mode: av.EnumSchema; optional: av.BoolSchema; }>>; apiContracts: av.ArraySchema; version: av.StringSchema; viewId: av.StringSchema; methods: av.ArraySchema>; capabilities: av.ArraySchema; permissions: av.ArraySchema; modes: av.ArraySchema>; }>>; developerResources: av.ArraySchema; title: av.StringSchema; description: av.OptionalSchema; mediaType: av.StringSchema; language: av.OptionalSchema; content: av.StringSchema; }>>; configSchemas: av.ArraySchema; jsonSchema: av.BaseSchema; groups: av.OptionalSchema; order: av.OptionalSchema; optional: av.OptionalSchema; }>>>; fields: av.ArraySchema; visibility: av.EnumSchema; ownership: av.EnumSchema; sourceOfTruth: av.EnumSchema; groupId: av.OptionalSchema; order: av.OptionalSchema; defaultValue: av.OptionalSchema>; ui: av.OptionalSchema>; placeholder: av.OptionalSchema; options: av.OptionalSchema>>; optionsSource: av.OptionalSchema>; min: av.OptionalSchema>; max: av.OptionalSchema>; step: av.OptionalSchema; rows: av.OptionalSchema; }>>; required: av.BoolSchema; }>>; }>>; webhooks: av.ArraySchema; payloadSchema: av.BaseSchema; }>>; shell: av.OptionalSchema; title: av.StringSchema; description: av.StringSchema; defaultItems: av.ArraySchema; }>>; }>>; viewIndex: av.RecordSchema; paramsSchema: av.OptionalSchema>; operations: av.ArraySchema; title: av.StringSchema; description: av.StringSchema; renderers: av.ArraySchema; renderModes: av.ArraySchema>; role: av.OptionalSchema; authRequired: av.BoolSchema; sitemap: av.OptionalSchema; lastModified: av.OptionalSchema; changeFrequency: av.OptionalSchema>; priority: av.OptionalSchema; }>>; robots: av.ArraySchema; crawlDelaySeconds: av.OptionalSchema; }>>; chrome: av.OptionalSchema; hideHeader: av.OptionalSchema; hideFooter: av.OptionalSchema; fullScreen: av.OptionalSchema; }>, av.RecordSchema>]>>; dependencies: av.ArraySchema; operationId: av.StringSchema; method: av.EnumSchema; }>>; permissions: av.ArraySchema; }>>; renderable: av.BoolSchema; schemas: av.OptionalSchema>; headers: av.OptionalSchema>; request: av.OptionalSchema>; multipart: av.OptionalSchema>; response: av.OptionalSchema>; }>>; raw: av.OptionalSchema; apiContracts: av.ArraySchema; version: av.StringSchema; viewId: av.StringSchema; methods: av.ArraySchema>; capabilities: av.ArraySchema; permissions: av.ArraySchema; modes: av.ArraySchema>; }>>; demoScenarios: av.ArraySchema; match: av.OptionalSchema>; params: av.OptionalSchema>; headers: av.OptionalSchema>; request: av.OptionalSchema>; }>>; response: av.BaseSchema; }>>; }>>; fragments: av.ArraySchema; }>>; }>>; }>>; m2m: av.ObjectSchema<{ bindings: av.ArraySchema; sourceServiceId: av.StringSchema; requestId: av.StringSchema; contractId: av.StringSchema; targetServiceId: av.StringSchema; targetViewId: av.StringSchema; mode: av.EnumSchema; enabled: av.BoolSchema; createdAt: av.StringSchema; }>>; grants: av.ArraySchema; bindingId: av.StringSchema; methods: av.ArraySchema>; permissions: av.ArraySchema; enabled: av.BoolSchema; createdAt: av.StringSchema; }>>; }>; webhooks: av.ObjectSchema<{ targets: av.ArraySchema; serviceId: av.StringSchema; eventId: av.StringSchema; url: av.StringSchema; secret: av.StringSchema; createdAt: av.StringSchema; enabled: av.BoolSchema; maxAttempts: av.IntSchema; }>>; }>; }>; export type BetterPortalConfig = Infer; export interface BetterPortalResolvedRequestContext { tenant: BetterPortalTenant; app: BetterPortalResolvedApp; } export interface BetterPortalResolvedServiceBinding { tenant: BetterPortalTenant; app: BetterPortalResolvedApp; service: TenantServiceRegistration; } export declare const BetterPortalOriginPolicySchema: av.ObjectSchema<{ allowedOrigins: av.ArraySchema; allowedReferers: av.ArraySchema; }>; export type BetterPortalOriginPolicy = Infer; //# sourceMappingURL=platformConfig.d.ts.map