import { ReactNode } from 'react'; /** The English defaults. A deployment overrides any subtree via * {@link DevtoolsStringsProvider} or the `strings` prop; unspecified keys fall * through to these. */ export declare const defaultDevtoolsStrings: DevtoolsStrings; /** Every user-facing string the devtools overlay renders. Scalars are literals; * anything that interpolates a value (count, name) is a function so a locale * can reorder/pluralize. English defaults live in {@link defaultDevtoolsStrings}. */ export declare interface DevtoolsStrings { /** The shell: the closed capsule, the console chrome, docking, keyboard. */ readonly shell: { /** aria-label on the open (dialog) surface (the full product name). */ readonly brand: string; /** The bold brand word in the console header. */ readonly brandWord: string; /** The uppercase word beside the brand word in the header. */ readonly kicker: string; /** Capsule `aria-label` (screen-reader). */ readonly openLabel: string; /** Capsule `title` tooltip — includes the shortcut hint. */ readonly openTitle: string; /** Close IconButton `title` tooltip. */ readonly closeTitle: string; /** Search box placeholder. */ readonly searchPlaceholder: string; /** Search box `aria-label`. */ readonly searchLabel: string; /** The dock-menu button's tooltip and the menu's `aria-label`. */ readonly dockMenuTitle: string; readonly dockBottom: string; readonly dockTop: string; readonly dockLeft: string; readonly dockRight: string; readonly dockWindow: string; /** The "push the page" switch in the dock menu. */ readonly pushPage: string; /** One line under the switch: what it does and where it cannot work. */ readonly pushPageHint: string; /** Resize grip `aria-label`. */ readonly resizeLabel: string; /** Window title bar tooltip (drag to move). */ readonly moveTitle: string; /** Scope chip for the unified list. */ readonly scopeAll: string; /** Connection words in the capsule + footer. */ readonly connected: string; readonly recovering: string; readonly degraded: string; readonly offline: string; /** Capsule chip words — rendered after the bold count. */ readonly live: string; readonly pending: string; readonly retainedSelection: string; readonly pendingInvocations: (n: number) => string; readonly emptyPending: string; readonly emptyPendingHint: string; readonly failed: string; readonly errorsWord: (n: number) => string; readonly warningsWord: (n: number) => string; /** Result list. */ readonly results: (n: number) => string; readonly noResults: string; readonly noResultsHint: string; readonly emptyAll: string; readonly emptyAllHint: string; /** Per-scope empty states (no query, no items of that source). */ readonly emptySubscriptions: string; readonly emptySubscriptionsHint: string; readonly emptyMutations: string; readonly emptyMutationsHint: string; readonly emptyActions: string; readonly emptyActionsHint: string; readonly emptyTraces: string; readonly emptyTracesHint: string; readonly emptyLogs: string; readonly emptyLogsHint: string; readonly selectHint: string; /** Footer key hints. */ readonly hintNavigate: string; readonly hintOpen: string; readonly hintToggle: string; readonly hintDock: string; /** The overlay's own error state — shown inside its chrome, never the page's. */ readonly crashTitle: string; readonly crashReset: string; }; /** The scope-chip labels. */ readonly tabs: { readonly subscriptions: string; readonly mutations: string; readonly actions: string; readonly stores: string; readonly indexes: string; readonly webhooks: string; readonly traces: string; readonly routes: string; readonly runtimes: string; readonly logs: string; readonly workflows: string; }; /** — runs, steps, the start form and the signal sender. */ readonly workflows: { readonly noApi: string; readonly noDefinitions: string; readonly noRuns: string; readonly runsUnavailable: string; readonly runs: (count: number) => string; readonly runsBadge: (count: number) => string; readonly runningBadge: (count: number) => string; readonly child: string; readonly start: string; readonly starting: string; readonly workflowLabel: string; readonly payloadLabel: string; readonly payloadHint: string; readonly invalidJson: (message: string) => string; readonly started: (executionId: string, status: string) => string; readonly startFailed: (message: string) => string; readonly steps: (count: number) => string; readonly noSteps: string; readonly events: (count: number) => string; readonly attempt: (n: number) => string; readonly input: string; readonly output: string; readonly error: string; readonly trace: string; readonly cancel: string; readonly cancelResult: (kind: string) => string; readonly awaiting: string; readonly signalName: string; readonly signalPayload: string; readonly sendSignal: string; readonly signalSent: (name: string) => string; readonly actionFailed: (action: string, message: string) => string; }; /** empty/section copy. */ readonly subscriptions: { readonly emptyTitle: string; readonly emptyHint: string; readonly timelineTitle: string; }; /** empty/section copy. */ readonly indexes: { readonly noApis: string; readonly unreachableTitle: string; readonly unreachableHint: string; readonly offline: string; readonly tables: string; readonly subscriptionsSection: string; readonly subsBadge: (count: number) => string; readonly live: string; readonly poll: string; readonly via: string; readonly clients: (count: number) => string; }; /** section headers + the delivery/target labels. */ readonly webhooks: { readonly empty: string; readonly outgoing: (count: number) => string; readonly incoming: (count: number) => string; readonly targets: (count: number) => string; readonly deliveries: (count: number) => string; readonly signed: string; readonly unsigned: string; readonly active: string; readonly paused: string; readonly attempt: (n: number) => string; }; /** empty state + section chrome. */ readonly mutations: { readonly emptyTitle: string; readonly emptyHint: string; readonly clearTitle: string; readonly clear: string; readonly recent: (count: number) => string; }; /** filter chrome + empty states + the tail section. */ readonly logs: { readonly filters: string; readonly clearTitle: string; readonly clear: string; readonly searchPlaceholder: string; readonly emptyNone: string; readonly emptyNoMatch: string; readonly emptyHint: string; readonly tail: string; }; /** section headers + loader empty state. */ readonly routes: { readonly currentRoute: string; readonly loaderData: string; readonly collapse: string; readonly expand: string; readonly noLoaderTitle: string; readonly noLoaderHint: (routerTag: ReactNode) => ReactNode; }; /** empty state + the per-api status badge. */ readonly runtimes: { readonly emptyTitle: string; readonly emptyHint: string; readonly live: string; }; /** empty states + the trace-row labels. */ readonly traces: { readonly includeBackground: string; readonly duration: string; readonly lastDelivery: string; readonly attributes: string; readonly noAttributes: string; readonly sqlWithoutCaller: string; readonly missingParents: string; readonly noApi: string; readonly noneCaptured: (apiName: string) => string; readonly proxiedTitle: string; readonly proxiedHint: (command: ReactNode) => ReactNode; readonly ok: string; readonly error: string; readonly sub: string; readonly delivery: (count: number) => string; readonly spans: (count: number) => string; }; } /** Provide localized (or otherwise overridden) devtools strings to every panel * below. Overrides are deep-merged onto the English defaults — supply only the * sections/keys you change. Nesting providers merges onto the parent. */ export declare function DevtoolsStringsProvider(props: { readonly strings: PartialDevtoolsStrings; readonly children: ReactNode; }): ReactNode; export declare type Dock = 'bottom' | 'top' | 'left' | 'right' | 'window'; /** A caller may override any subtree, not the whole object — deep-partial per * section (each section is a flat bag of literals/functions, so a shallow * per-section merge is exact). */ export declare type PartialDevtoolsStrings = { readonly [K in keyof DevtoolsStrings]?: Partial; }; /** Read the active devtools strings. Returns the English defaults when no * provider is mounted, so every panel works with zero setup. A per-call * `override` is deep-merged on top of whatever this returns. */ export declare const useDevtoolsStrings: (override?: PartialDevtoolsStrings) => DevtoolsStrings; /** * Main devtools overlay component. Mount once near the root of the * app — typically by the framework's `mount()` auto-injection. * * `initialIsOpen` and `initialDock` are FIRST-RUN defaults for a foreign-host * mount — once the user toggles/moves the overlay, the persisted localStorage * state wins. * * The host page's CSS is unaffected: every Tailwind utility under * `.vdt-scope` is prefixed `vdt:` and every token override is scoped * to the wrapper class. */ export declare const VoltroDevtools: ({ initialIsOpen, initialDock, strings, inspectToken, }?: VoltroDevtoolsProps) => ReactNode; export declare interface VoltroDevtoolsProps { /** Start with the console open when nothing is persisted yet. A persisted * open/closed choice (localStorage) always wins. Default `false`. */ readonly initialIsOpen?: boolean; /** Where the console docks when nothing is persisted yet. A persisted dock * always wins. Default `'bottom'`. */ readonly initialDock?: Dock; /** Override any user-facing label the overlay renders (scope labels, empty * states, the capsule tooltip, …). Deep-merged onto the English defaults — * supply only the sections/keys you change. Nesting a * `` above the overlay works too. */ readonly strings?: PartialDevtoolsStrings; /** Bearer token for the `/_voltro/inspect/*` endpoints the traces / webhooks * / indexes sources poll. * * Usually you want NOTHING here. `/_voltro/inspect/*` is fail-closed, but * under `voltro dev` the vite proxy attaches the minted token server-side, so * those sources are already authenticated and the browser never holds a * credential. Set this only to reach an api the proxy does not front (a * `voltro start` deploy with `VOLTRO_INSPECT_TOKEN` set, say) — and note that * whatever you pass ships in the client bundle. */ readonly inspectToken?: string; } export { }