import { IEnvironmentAware } from "../environment-aware";
import * as constructs from "constructs";
/**
 * Indicates that this resource can be referenced as a Policy.
 *
 * @stability experimental
 */
export interface IPolicyRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a Policy resource.
     */
    readonly policyRef: PolicyReference;
}
/**
 * A reference to a Policy resource.
 *
 * @struct
 * @stability external
 */
export interface PolicyReference {
    /**
     * The PolicyArn of the Policy resource.
     */
    readonly policyArn: string;
}
/**
 * Indicates that this resource can be referenced as a Service.
 *
 * @stability experimental
 */
export interface IServiceRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a Service resource.
     */
    readonly serviceRef: ServiceReference;
}
/**
 * A reference to a Service resource.
 *
 * @struct
 * @stability external
 */
export interface ServiceReference {
    /**
     * The ServiceArn of the Service resource.
     */
    readonly serviceArn: string;
}
/**
 * Indicates that this resource can be referenced as a ServiceFunction.
 *
 * @stability experimental
 */
export interface IServiceFunctionRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a ServiceFunction resource.
     */
    readonly serviceFunctionRef: ServiceFunctionReference;
}
/**
 * A reference to a ServiceFunction resource.
 *
 * @struct
 * @stability external
 */
export interface ServiceFunctionReference {
    /**
     * The ServiceArn of the ServiceFunction resource.
     */
    readonly serviceArn: string;
    /**
     * The ServiceFunctionId of the ServiceFunction resource.
     */
    readonly serviceFunctionId: string;
}
/**
 * Indicates that this resource can be referenced as a System.
 *
 * @stability experimental
 */
export interface ISystemRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a System resource.
     */
    readonly systemRef: SystemReference;
}
/**
 * A reference to a System resource.
 *
 * @struct
 * @stability external
 */
export interface SystemReference {
    /**
     * The SystemArn of the System resource.
     */
    readonly systemArn: string;
}
/**
 * Indicates that this resource can be referenced as a UserJourney.
 *
 * @stability experimental
 */
export interface IUserJourneyRef extends constructs.IConstruct, IEnvironmentAware {
    /**
     * A reference to a UserJourney resource.
     */
    readonly userJourneyRef: UserJourneyReference;
}
/**
 * A reference to a UserJourney resource.
 *
 * @struct
 * @stability external
 */
export interface UserJourneyReference {
    /**
     * The SystemIdentifier of the UserJourney resource.
     */
    readonly systemIdentifier: string;
    /**
     * The UserJourneyId of the UserJourney resource.
     */
    readonly userJourneyId: string;
}
