/** * Design-Language Copy Tokens * * Frozen strings shared between the new consent screen and the OAuth Gateway * consent modal. Pinning the vocabulary in one place keeps both screens on * the same design system, simplifies i18n, and makes the future gateway * migration mechanical. * * Templates use `{Placeholder}` syntax for values bound by `formatToken`. * Templates that take no values are plain strings. * * @module @kya-os/consent/copy/tokens */ export declare const CONSENT_COPY_TOKENS: { readonly eyebrow: { /** Light theme (consent screen). */ readonly permissionRequest: "PERMISSION REQUEST"; /** Dark theme (gateway). `{Brand}` → operator-set brand name. */ readonly gatewayBrand: "{Brand} Gateway"; }; readonly headline: { /** * `{Agent}` → agent display name (serif italic at render time). * `{Verb}` → operator verb, default "use". * `{Org}` → organization display name (serif italic at render time). */ readonly template: "{Agent} would like to {Verb} at {Org} for you."; }; readonly subhead: { /** `{Agent}` → agent display name. */ readonly template: "Pick what {Agent} is allowed to do on your behalf. You stay in charge — change or cancel anytime."; }; readonly agentTile: { readonly verifiedPill: "Verified"; readonly unverifiedPill: "UNVERIFIED"; /** `{Vendor}` → vendor name. `{Surface}` → surface label. */ readonly metaTemplate: "Made by {Vendor} · Asking from your {Surface} · {Connected}"; readonly connectedJustNow: "Connected just now"; /** `{Minutes}` → minutes since connection. */ readonly connectedMinutesAgo: "Connected {Minutes} min ago"; }; readonly section: { /** `{Agent}` → agent display name (uppercased at render time). */ readonly capabilitiesHeader: "WHAT {Agent} CAN DO FOR YOU"; readonly tapToToggle: "Tap to toggle"; /** Used in the dark gateway theme. */ readonly permissionsRequested: "PERMISSIONS REQUESTED"; }; readonly capabilityRow: { readonly higherRiskChip: "HIGHER RISK"; readonly viewPolicyLink: "View policy"; /** Disclosure title above the raw Cedar. */ readonly rawPolicyTitle: "Cedar policy"; /** Disclosure title above the plain-language gloss. */ readonly glossTitle: "What this allows"; /** Used in the gloss when no resource is extractable. */ readonly glossUnknownResource: "this deployment"; }; readonly footer: { /** * `{RevocationPath}` → e.g. "Account → Connected Agents". * `{Org}` → organization display name. */ readonly revocationTemplate: "You can change or revoke any of these permissions anytime under {RevocationPath} at {Org}."; /** `{Days}` → inactivity days, default 90. */ readonly inactivityTemplate: "Permissions automatically expire after {Days} days of inactivity."; }; readonly actions: { /** Light theme primary. `{Agent}` → agent display name. */ readonly allowAgentTemplate: "Allow {Agent}"; /** Dark theme primary. */ readonly allowAccess: "Allow access"; /** Light theme secondary. */ readonly notNow: "Not now"; /** Dark theme secondary. */ readonly deny: "Deny"; }; readonly attribution: { /** Light theme. */ readonly protectedBy: "Protected by Checkpoint"; /** Dark theme. */ readonly securedBy: "Secured by Checkpoint"; readonly howThisWorks: "How does this work?"; }; }; export type ConsentCopyTokens = typeof CONSENT_COPY_TOKENS; /** * Bind `{Placeholder}` values into a template. Unmatched placeholders are * left in place so missing context becomes visible rather than silently * collapsing to empty strings. */ export declare function formatToken(template: string, values: Record): string; //# sourceMappingURL=tokens.d.ts.map