## API Report File for "@azure/arm-chaos"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts

import { AbortSignalLike } from '@azure/abort-controller';
import { ClientOptions } from '@azure-rest/core-client';
import { OperationOptions } from '@azure-rest/core-client';
import { OperationState } from '@azure/core-lro';
import { PathUncheckedResponse } from '@azure-rest/core-client';
import { Pipeline } from '@azure/core-rest-pipeline';
import { PollerLike } from '@azure/core-lro';
import { TokenCredential } from '@azure/core-auth';

// @public
export interface ActionStatus {
    readonly actionId?: string;
    readonly actionName?: string;
    readonly endTime?: Date;
    readonly startTime?: Date;
    readonly status?: string;
    readonly targets?: ExperimentExecutionActionTargetDetailsProperties[];
}

// @public
export type ActionType = string;

// @public
export interface BranchStatus {
    readonly actions?: ActionStatus[];
    readonly branchId?: string;
    readonly branchName?: string;
    readonly status?: string;
}

// @public
export interface CapabilitiesCreateOrUpdateOptionalParams extends OperationOptions {
}

// @public
export interface CapabilitiesDeleteOptionalParams extends OperationOptions {
}

// @public
export interface CapabilitiesGetOptionalParams extends OperationOptions {
}

// @public
export interface CapabilitiesListOptionalParams extends OperationOptions {
    continuationToken?: string;
}

// @public
export interface CapabilitiesOperations {
    createOrUpdate: (resourceGroupName: string, parentProviderNamespace: string, parentResourceType: string, parentResourceName: string, targetName: string, capabilityName: string, resource: Capability, options?: CapabilitiesCreateOrUpdateOptionalParams) => Promise<Capability>;
    delete: (resourceGroupName: string, parentProviderNamespace: string, parentResourceType: string, parentResourceName: string, targetName: string, capabilityName: string, options?: CapabilitiesDeleteOptionalParams) => Promise<void>;
    get: (resourceGroupName: string, parentProviderNamespace: string, parentResourceType: string, parentResourceName: string, targetName: string, capabilityName: string, options?: CapabilitiesGetOptionalParams) => Promise<Capability>;
    list: (resourceGroupName: string, parentProviderNamespace: string, parentResourceType: string, parentResourceName: string, targetName: string, options?: CapabilitiesListOptionalParams) => PagedAsyncIterableIterator<Capability>;
}

// @public
export interface Capability extends ProxyResource {
    properties?: CapabilityProperties;
}

// @public
export interface CapabilityProperties {
    readonly description?: string;
    readonly parametersSchema?: string;
    readonly publisher?: string;
    readonly targetType?: string;
    readonly urn?: string;
}

// @public
export interface CapabilityType extends ProxyResource {
    properties?: CapabilityTypeProperties;
}

// @public
export interface CapabilityTypeProperties {
    readonly azureRbacActions?: string[];
    readonly azureRbacDataActions?: string[];
    readonly description?: string;
    readonly displayName?: string;
    readonly kind?: string;
    readonly parametersSchema?: string;
    readonly publisher?: string;
    readonly requiredAzureRoleDefinitionIds?: string[];
    readonly runtimeProperties?: CapabilityTypePropertiesRuntimeProperties;
    readonly targetType?: string;
    readonly urn?: string;
}

// @public
export interface CapabilityTypePropertiesRuntimeProperties {
    readonly kind?: string;
}

// @public
export interface CapabilityTypesGetOptionalParams extends OperationOptions {
}

// @public
export interface CapabilityTypesListOptionalParams extends OperationOptions {
    continuationToken?: string;
}

// @public
export interface CapabilityTypesOperations {
    get: (location: string, targetTypeName: string, capabilityTypeName: string, options?: CapabilityTypesGetOptionalParams) => Promise<CapabilityType>;
    list: (location: string, targetTypeName: string, options?: CapabilityTypesListOptionalParams) => PagedAsyncIterableIterator<CapabilityType>;
}

// @public
export interface ChaosExperimentAction {
    name: string;
    type: ExperimentActionType;
}

// @public
export type ChaosExperimentActionUnion = ContinuousAction | DelayAction | DiscreteAction | ChaosExperimentAction;

// @public
export interface ChaosExperimentBranch {
    actions: ChaosExperimentActionUnion[];
    name: string;
}

// @public
export interface ChaosExperimentStep {
    branches: ChaosExperimentBranch[];
    name: string;
}

// @public (undocumented)
export class ChaosManagementClient {
    constructor(credential: TokenCredential, subscriptionId: string, options?: ChaosManagementClientOptionalParams);
    readonly capabilities: CapabilitiesOperations;
    readonly capabilityTypes: CapabilityTypesOperations;
    readonly experiments: ExperimentsOperations;
    readonly operations: OperationsOperations;
    readonly operationStatuses: OperationStatusesOperations;
    readonly pipeline: Pipeline;
    readonly targets: TargetsOperations;
    readonly targetTypes: TargetTypesOperations;
}

// @public
export interface ChaosManagementClientOptionalParams extends ClientOptions {
    apiVersion?: string;
}

// @public
export interface ChaosTargetFilter {
    type: FilterType;
}

// @public
export type ChaosTargetFilterUnion = ChaosTargetSimpleFilter | ChaosTargetFilter;

// @public
export interface ChaosTargetListSelector extends ChaosTargetSelector {
    targets: TargetReference[];
    type: "List";
}

// @public
export interface ChaosTargetQuerySelector extends ChaosTargetSelector {
    queryString: string;
    subscriptionIds: string[];
    type: "Query";
}

// @public
export interface ChaosTargetSelector {
    filter?: ChaosTargetFilterUnion;
    id: string;
    type: SelectorType;
}

// @public
export type ChaosTargetSelectorUnion = ChaosTargetListSelector | ChaosTargetQuerySelector | ChaosTargetSelector;

// @public
export interface ChaosTargetSimpleFilter extends ChaosTargetFilter {
    parameters?: ChaosTargetSimpleFilterParameters;
    type: "Simple";
}

// @public
export interface ChaosTargetSimpleFilterParameters {
    zones?: string[];
}

// @public
export type ContinuablePage<TElement, TPage = TElement[]> = TPage & {
    continuationToken?: string;
};

// @public
export interface ContinuousAction extends ChaosExperimentAction {
    duration: string;
    parameters: KeyValuePair[];
    selectorId: string;
    type: "continuous";
}

// @public
export type CreatedByType = string;

// @public
export interface DelayAction extends ChaosExperimentAction {
    duration: string;
    type: "delay";
}

// @public
export interface DiscreteAction extends ChaosExperimentAction {
    parameters: KeyValuePair[];
    selectorId: string;
    type: "discrete";
}

// @public
export interface ErrorAdditionalInfo {
    readonly info?: Record<string, any>;
    readonly type?: string;
}

// @public
export interface ErrorDetail {
    readonly additionalInfo?: ErrorAdditionalInfo[];
    readonly code?: string;
    readonly details?: ErrorDetail[];
    readonly message?: string;
    readonly target?: string;
}

// @public
export interface ErrorResponse {
    error?: ErrorDetail;
}

// @public
export interface Experiment extends TrackedResource {
    identity?: ManagedServiceIdentity;
    properties: ExperimentProperties;
}

// @public
export type ExperimentActionType = string;

// @public
export interface ExperimentExecution extends ProxyResource {
    properties?: ExperimentExecutionProperties;
}

// @public
export interface ExperimentExecutionActionTargetDetailsError {
    readonly code?: string;
    readonly message?: string;
}

// @public
export interface ExperimentExecutionActionTargetDetailsProperties {
    readonly error?: ExperimentExecutionActionTargetDetailsError;
    readonly status?: string;
    readonly target?: string;
    readonly targetCompletedTime?: Date;
    readonly targetFailedTime?: Date;
}

// @public
export interface ExperimentExecutionDetails {
    readonly id?: string;
    readonly name?: string;
    readonly properties?: ExperimentExecutionDetailsProperties;
    readonly type?: string;
}

// @public
export interface ExperimentExecutionDetailsProperties {
    readonly failureReason?: string;
    readonly lastActionAt?: Date;
    readonly runInformation?: ExperimentExecutionDetailsPropertiesRunInformation;
    readonly startedAt?: Date;
    readonly status?: string;
    readonly stoppedAt?: Date;
}

// @public
export interface ExperimentExecutionDetailsPropertiesRunInformation {
    readonly steps?: StepStatus[];
}

// @public
export interface ExperimentExecutionProperties {
    readonly startedAt?: Date;
    readonly status?: string;
    readonly stoppedAt?: Date;
}

// @public
export interface ExperimentProperties {
    readonly provisioningState?: ProvisioningState;
    selectors: ChaosTargetSelectorUnion[];
    steps: ChaosExperimentStep[];
}

// @public
export interface ExperimentsCancelOptionalParams extends OperationOptions {
    updateIntervalInMs?: number;
}

// @public
export interface ExperimentsCreateOrUpdateOptionalParams extends OperationOptions {
    updateIntervalInMs?: number;
}

// @public
export interface ExperimentsDeleteOptionalParams extends OperationOptions {
    updateIntervalInMs?: number;
}

// @public
export interface ExperimentsExecutionDetailsOptionalParams extends OperationOptions {
}

// @public
export interface ExperimentsGetExecutionOptionalParams extends OperationOptions {
}

// @public
export interface ExperimentsGetOptionalParams extends OperationOptions {
}

// @public
export interface ExperimentsListAllExecutionsOptionalParams extends OperationOptions {
}

// @public
export interface ExperimentsListAllOptionalParams extends OperationOptions {
    continuationToken?: string;
    running?: boolean;
}

// @public
export interface ExperimentsListOptionalParams extends OperationOptions {
    continuationToken?: string;
    running?: boolean;
}

// @public
export interface ExperimentsOperations {
    cancel: (resourceGroupName: string, experimentName: string, options?: ExperimentsCancelOptionalParams) => PollerLike<OperationState<void>, void>;
    createOrUpdate: (resourceGroupName: string, experimentName: string, resource: Experiment, options?: ExperimentsCreateOrUpdateOptionalParams) => PollerLike<OperationState<Experiment>, Experiment>;
    delete: (resourceGroupName: string, experimentName: string, options?: ExperimentsDeleteOptionalParams) => PollerLike<OperationState<void>, void>;
    executionDetails: (resourceGroupName: string, experimentName: string, executionId: string, options?: ExperimentsExecutionDetailsOptionalParams) => Promise<ExperimentExecutionDetails>;
    get: (resourceGroupName: string, experimentName: string, options?: ExperimentsGetOptionalParams) => Promise<Experiment>;
    getExecution: (resourceGroupName: string, experimentName: string, executionId: string, options?: ExperimentsGetExecutionOptionalParams) => Promise<ExperimentExecution>;
    list: (resourceGroupName: string, options?: ExperimentsListOptionalParams) => PagedAsyncIterableIterator<Experiment>;
    listAll: (options?: ExperimentsListAllOptionalParams) => PagedAsyncIterableIterator<Experiment>;
    listAllExecutions: (resourceGroupName: string, experimentName: string, options?: ExperimentsListAllExecutionsOptionalParams) => PagedAsyncIterableIterator<ExperimentExecution>;
    start: (resourceGroupName: string, experimentName: string, options?: ExperimentsStartOptionalParams) => PollerLike<OperationState<void>, void>;
    update: (resourceGroupName: string, experimentName: string, properties: ExperimentUpdate, options?: ExperimentsUpdateOptionalParams) => PollerLike<OperationState<Experiment>, Experiment>;
}

// @public
export interface ExperimentsStartOptionalParams extends OperationOptions {
    updateIntervalInMs?: number;
}

// @public
export interface ExperimentsUpdateOptionalParams extends OperationOptions {
    updateIntervalInMs?: number;
}

// @public
export interface ExperimentUpdate {
    identity?: ManagedServiceIdentity;
    tags?: Record<string, string>;
}

// @public
export type FilterType = string;

// @public
export interface KeyValuePair {
    key: string;
    value: string;
}

// @public
export enum KnownActionType {
    Internal = "Internal"
}

// @public
export enum KnownCreatedByType {
    Application = "Application",
    Key = "Key",
    ManagedIdentity = "ManagedIdentity",
    User = "User"
}

// @public
export enum KnownExperimentActionType {
    // (undocumented)
    Continuous = "continuous",
    // (undocumented)
    Delay = "delay",
    // (undocumented)
    Discrete = "discrete"
}

// @public
export enum KnownFilterType {
    Simple = "Simple"
}

// @public
export enum KnownManagedServiceIdentityType {
    None = "None",
    SystemAssigned = "SystemAssigned",
    SystemAssignedUserAssigned = "SystemAssigned,UserAssigned",
    UserAssigned = "UserAssigned"
}

// @public
export enum KnownOrigin {
    System = "system",
    User = "user",
    UserSystem = "user,system"
}

// @public
export enum KnownProvisioningState {
    Canceled = "Canceled",
    Creating = "Creating",
    Deleting = "Deleting",
    Failed = "Failed",
    Succeeded = "Succeeded",
    Updating = "Updating"
}

// @public
export enum KnownSelectorType {
    List = "List",
    Query = "Query"
}

// @public
export enum KnownTargetReferenceType {
    ChaosTarget = "ChaosTarget"
}

// @public
export enum KnownVersions {
    V20250101 = "2025-01-01"
}

// @public
export interface ManagedServiceIdentity {
    readonly principalId?: string;
    readonly tenantId?: string;
    type: ManagedServiceIdentityType;
    userAssignedIdentities?: Record<string, UserAssignedIdentity | null>;
}

// @public
export type ManagedServiceIdentityType = string;

// @public
export interface Operation {
    readonly actionType?: ActionType;
    display?: OperationDisplay;
    readonly isDataAction?: boolean;
    readonly name?: string;
    readonly origin?: Origin;
}

// @public
export interface OperationDisplay {
    readonly description?: string;
    readonly operation?: string;
    readonly provider?: string;
    readonly resource?: string;
}

// @public
export interface OperationsListAllOptionalParams extends OperationOptions {
}

// @public
export interface OperationsOperations {
    listAll: (options?: OperationsListAllOptionalParams) => PagedAsyncIterableIterator<Operation>;
}

// @public
export interface OperationStatusesGetOptionalParams extends OperationOptions {
}

// @public
export interface OperationStatusesOperations {
    get: (location: string, operationId: string, options?: OperationStatusesGetOptionalParams) => Promise<OperationStatusResult>;
}

// @public
export interface OperationStatusResult {
    endTime?: Date;
    error?: ErrorDetail;
    id?: string;
    name?: string;
    operations?: OperationStatusResult[];
    percentComplete?: number;
    readonly resourceId?: string;
    startTime?: Date;
    status: string;
}

// @public
export type Origin = string;

// @public
export interface PagedAsyncIterableIterator<TElement, TPage = TElement[], TPageSettings extends PageSettings = PageSettings> {
    [Symbol.asyncIterator](): PagedAsyncIterableIterator<TElement, TPage, TPageSettings>;
    byPage: (settings?: TPageSettings) => AsyncIterableIterator<ContinuablePage<TElement, TPage>>;
    next(): Promise<IteratorResult<TElement>>;
}

// @public
export interface PageSettings {
    continuationToken?: string;
}

// @public
export type ProvisioningState = string;

// @public
export interface ProxyResource extends Resource {
}

// @public
export interface Resource {
    readonly id?: string;
    readonly name?: string;
    readonly systemData?: SystemData;
    readonly type?: string;
}

// @public
export function restorePoller<TResponse extends PathUncheckedResponse, TResult>(client: ChaosManagementClient, serializedState: string, sourceOperation: (...args: any[]) => PollerLike<OperationState<TResult>, TResult>, options?: RestorePollerOptions<TResult>): PollerLike<OperationState<TResult>, TResult>;

// @public (undocumented)
export interface RestorePollerOptions<TResult, TResponse extends PathUncheckedResponse = PathUncheckedResponse> extends OperationOptions {
    abortSignal?: AbortSignalLike;
    processResponseBody?: (result: TResponse) => Promise<TResult>;
    updateIntervalInMs?: number;
}

// @public
export type SelectorType = string;

// @public
export interface StepStatus {
    readonly branches?: BranchStatus[];
    readonly status?: string;
    readonly stepId?: string;
    readonly stepName?: string;
}

// @public
export interface SystemData {
    createdAt?: Date;
    createdBy?: string;
    createdByType?: CreatedByType;
    lastModifiedAt?: Date;
    lastModifiedBy?: string;
    lastModifiedByType?: CreatedByType;
}

// @public
export interface Target extends ProxyResource {
    location?: string;
    properties: Record<string, any>;
}

// @public
export interface TargetReference {
    id: string;
    type: TargetReferenceType;
}

// @public
export type TargetReferenceType = string;

// @public
export interface TargetsCreateOrUpdateOptionalParams extends OperationOptions {
}

// @public
export interface TargetsDeleteOptionalParams extends OperationOptions {
}

// @public
export interface TargetsGetOptionalParams extends OperationOptions {
}

// @public
export interface TargetsListOptionalParams extends OperationOptions {
    continuationToken?: string;
}

// @public
export interface TargetsOperations {
    createOrUpdate: (resourceGroupName: string, parentProviderNamespace: string, parentResourceType: string, parentResourceName: string, targetName: string, resource: Target, options?: TargetsCreateOrUpdateOptionalParams) => Promise<Target>;
    delete: (resourceGroupName: string, parentProviderNamespace: string, parentResourceType: string, parentResourceName: string, targetName: string, options?: TargetsDeleteOptionalParams) => Promise<void>;
    get: (resourceGroupName: string, parentProviderNamespace: string, parentResourceType: string, parentResourceName: string, targetName: string, options?: TargetsGetOptionalParams) => Promise<Target>;
    list: (resourceGroupName: string, parentProviderNamespace: string, parentResourceType: string, parentResourceName: string, options?: TargetsListOptionalParams) => PagedAsyncIterableIterator<Target>;
}

// @public
export interface TargetType extends ProxyResource {
    properties: TargetTypeProperties;
}

// @public
export interface TargetTypeProperties {
    readonly description?: string;
    readonly displayName?: string;
    readonly propertiesSchema?: string;
    readonly resourceTypes?: string[];
}

// @public
export interface TargetTypesGetOptionalParams extends OperationOptions {
}

// @public
export interface TargetTypesListOptionalParams extends OperationOptions {
    continuationToken?: string;
}

// @public
export interface TargetTypesOperations {
    get: (location: string, targetTypeName: string, options?: TargetTypesGetOptionalParams) => Promise<TargetType>;
    list: (location: string, options?: TargetTypesListOptionalParams) => PagedAsyncIterableIterator<TargetType>;
}

// @public
export interface TrackedResource extends Resource {
    location: string;
    tags?: Record<string, string>;
}

// @public
export interface UserAssignedIdentity {
    readonly clientId?: string;
    readonly principalId?: string;
}

// (No @packageDocumentation comment for this package)

```
