import { n as IamPrimitives, t as AccessControl } from "../access-control-CxeWQI64.js"; import { r as Explain } from "../index-gnO2iETD.js"; import { t as IamMetrics } from "../index-YSJPBFXj.js"; import React from "react"; //#region src/dt/lib/flow.d.ts interface IamIFlowEntry { id: number; ts: number; subjectId: string; action: string; resource: string; resourceId?: string; scope?: string; allowed: boolean; durationMs?: number; reason?: string; decidingPolicy?: string; decidingRule?: string; environment?: Record; } type IFlowRecordInput = Omit & { ts?: number; }; interface IamIFlowRecorder { record(entry: IFlowRecordInput): IamIFlowEntry; list(): readonly IamIFlowEntry[]; get(id: number): IamIFlowEntry | undefined; clear(): void; subscribe(listener: () => void): () => void; } interface IamIFlowRecorderOptions { bufferSize?: number; } declare function iamCreateFlowRecorder(options?: IamIFlowRecorderOptions): IamIFlowRecorder; //#endregion //#region src/dt/lib/types.d.ts /** * Minimal engine surface the devtool relies on. Lets consumers pass any * concrete `Engine<...>` without variance issues. */ interface IamIDevtoolsEngine { can(subjectId: string, action: string, resource: { type: string; id?: string; attributes?: Record; }, environment?: Record): Promise; explain(subjectId: string, action: string, resource: { type: string; id?: string; attributes?: Record; }, environment?: Record): Promise; stats(): Record; resetStats(): void; admin: { listPolicies(): Promise; listRoles(): Promise; getPolicy(id: string): Promise; getRole(id: string): Promise; assignRole(subjectId: string, roleId: string, scope?: string): Promise; revokeRole(subjectId: string, roleId: string, scope?: string): Promise; setAttributes(subjectId: string, attrs: IamPrimitives.Attributes): Promise; getAttributes(subjectId: string): Promise; export(): Promise; }; } interface IamIDevtoolsMetrics { snapshot(): IamMetrics.ISnapshot; reset(): void; } interface IamIDecisionInput { subjectId: string; action: string; resourceType: string; resourceId: string; attributesJson: string; environmentJson: string; scope: string; } type IamPanelKey = 'flow' | 'decision' | 'policies' | 'roles' | 'subjects' | 'metrics'; //#endregion //#region src/dt/iam-devtools.d.ts interface IIamDevtoolsInnerProps { engine: IamIDevtoolsEngine; metrics?: IamIDevtoolsMetrics; flow?: IamIFlowRecorder; initialPanel?: IamPanelKey; defaultRequest?: Partial; pollMs?: number; embedded?: boolean; } declare function IamDevtoolsInner(props: IIamDevtoolsInnerProps): React.JSX.Element | null; //#endregion //#region src/dt/iam-devtools-panel.d.ts type ButtonPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' | 'relative'; type PanelPosition = 'top' | 'bottom' | 'left' | 'right'; interface IIamDevtoolsProps extends IIamDevtoolsInnerProps { initialIsOpen?: boolean; buttonPosition?: ButtonPosition; position?: PanelPosition; hideButton?: boolean; storagePrefix?: string; /** Floating gutter in px around the panel. 0 = flush edges (default). */ inset?: number; } declare function IamDevtools(props: IIamDevtoolsProps): React.JSX.Element | null; //#endregion //#region src/dt/panels/decision.d.ts declare function IamDecisionInspector({ engine, defaults }: { engine: IamIDevtoolsEngine; defaults?: Partial; }): React.JSX.Element; //#endregion //#region src/dt/panels/flow.d.ts declare function IamFlowPanel({ flow }: { flow: IamIFlowRecorder; }): React.JSX.Element; //#endregion //#region src/dt/panels/metrics.d.ts declare function IamMetricsPanel({ engine, metrics, pollMs }: { engine: IamIDevtoolsEngine; metrics?: IamIDevtoolsMetrics; pollMs?: number; }): React.JSX.Element; //#endregion //#region src/dt/panels/policies.d.ts declare function IamPoliciesPanel({ engine }: { engine: IamIDevtoolsEngine; }): React.JSX.Element; //#endregion //#region src/dt/panels/roles.d.ts declare function IamRolesPanel({ engine }: { engine: IamIDevtoolsEngine; }): React.JSX.Element; //#endregion //#region src/dt/panels/subjects.d.ts declare function IamSubjectsPanel({ engine }: { engine: IamIDevtoolsEngine; }): React.JSX.Element; //#endregion //#region src/dt/panels/trace-tree.d.ts declare function IamTraceTree({ result }: { result: Explain.IResult; }): React.JSX.Element; //#endregion export { type ButtonPosition, type IIamDevtoolsInnerProps, type IIamDevtoolsProps, IamDecisionInspector, IamDevtools, IamDevtoolsInner, IamFlowPanel, type IamIDecisionInput, type IamIDevtoolsEngine, type IamIDevtoolsMetrics, type IamIFlowEntry, type IamIFlowRecorder, type IamIFlowRecorderOptions, IamMetricsPanel, type IamPanelKey, IamPoliciesPanel, IamRolesPanel, IamSubjectsPanel, IamTraceTree, type PanelPosition, iamCreateFlowRecorder }; //# sourceMappingURL=index.d.ts.map