import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface DevopsProjectRepositorySettingConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#id DevopsProjectRepositorySetting#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#project_id DevopsProjectRepositorySetting#project_id}
    */
    readonly projectId: string;
    /**
    * approval_rules block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#approval_rules DevopsProjectRepositorySetting#approval_rules}
    */
    readonly approvalRules?: DevopsProjectRepositorySettingApprovalRules;
    /**
    * merge_settings block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#merge_settings DevopsProjectRepositorySetting#merge_settings}
    */
    readonly mergeSettings?: DevopsProjectRepositorySettingMergeSettings;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#timeouts DevopsProjectRepositorySetting#timeouts}
    */
    readonly timeouts?: DevopsProjectRepositorySettingTimeouts;
}
export interface DevopsProjectRepositorySettingApprovalRulesItemsReviewers {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#principal_id DevopsProjectRepositorySetting#principal_id}
    */
    readonly principalId: string;
}
export declare function devopsProjectRepositorySettingApprovalRulesItemsReviewersToTerraform(struct?: DevopsProjectRepositorySettingApprovalRulesItemsReviewers | cdktf.IResolvable): any;
export declare function devopsProjectRepositorySettingApprovalRulesItemsReviewersToHclTerraform(struct?: DevopsProjectRepositorySettingApprovalRulesItemsReviewers | cdktf.IResolvable): any;
export declare class DevopsProjectRepositorySettingApprovalRulesItemsReviewersOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): DevopsProjectRepositorySettingApprovalRulesItemsReviewers | cdktf.IResolvable | undefined;
    set internalValue(value: DevopsProjectRepositorySettingApprovalRulesItemsReviewers | cdktf.IResolvable | undefined);
    private _principalId?;
    get principalId(): string;
    set principalId(value: string);
    get principalIdInput(): string | undefined;
    get principalName(): string;
    get principalState(): string;
    get principalType(): string;
}
export declare class DevopsProjectRepositorySettingApprovalRulesItemsReviewersList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: DevopsProjectRepositorySettingApprovalRulesItemsReviewers[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): DevopsProjectRepositorySettingApprovalRulesItemsReviewersOutputReference;
}
export interface DevopsProjectRepositorySettingApprovalRulesItems {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#destination_branch DevopsProjectRepositorySetting#destination_branch}
    */
    readonly destinationBranch?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#min_approvals_count DevopsProjectRepositorySetting#min_approvals_count}
    */
    readonly minApprovalsCount: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#name DevopsProjectRepositorySetting#name}
    */
    readonly name: string;
    /**
    * reviewers block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#reviewers DevopsProjectRepositorySetting#reviewers}
    */
    readonly reviewers?: DevopsProjectRepositorySettingApprovalRulesItemsReviewers[] | cdktf.IResolvable;
}
export declare function devopsProjectRepositorySettingApprovalRulesItemsToTerraform(struct?: DevopsProjectRepositorySettingApprovalRulesItems | cdktf.IResolvable): any;
export declare function devopsProjectRepositorySettingApprovalRulesItemsToHclTerraform(struct?: DevopsProjectRepositorySettingApprovalRulesItems | cdktf.IResolvable): any;
export declare class DevopsProjectRepositorySettingApprovalRulesItemsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): DevopsProjectRepositorySettingApprovalRulesItems | cdktf.IResolvable | undefined;
    set internalValue(value: DevopsProjectRepositorySettingApprovalRulesItems | cdktf.IResolvable | undefined);
    private _destinationBranch?;
    get destinationBranch(): string;
    set destinationBranch(value: string);
    resetDestinationBranch(): void;
    get destinationBranchInput(): string | undefined;
    private _minApprovalsCount?;
    get minApprovalsCount(): number;
    set minApprovalsCount(value: number);
    get minApprovalsCountInput(): number | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _reviewers;
    get reviewers(): DevopsProjectRepositorySettingApprovalRulesItemsReviewersList;
    putReviewers(value: DevopsProjectRepositorySettingApprovalRulesItemsReviewers[] | cdktf.IResolvable): void;
    resetReviewers(): void;
    get reviewersInput(): cdktf.IResolvable | DevopsProjectRepositorySettingApprovalRulesItemsReviewers[] | undefined;
}
export declare class DevopsProjectRepositorySettingApprovalRulesItemsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: DevopsProjectRepositorySettingApprovalRulesItems[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): DevopsProjectRepositorySettingApprovalRulesItemsOutputReference;
}
export interface DevopsProjectRepositorySettingApprovalRules {
    /**
    * items block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#items DevopsProjectRepositorySetting#items}
    */
    readonly items: DevopsProjectRepositorySettingApprovalRulesItems[] | cdktf.IResolvable;
}
export declare function devopsProjectRepositorySettingApprovalRulesToTerraform(struct?: DevopsProjectRepositorySettingApprovalRulesOutputReference | DevopsProjectRepositorySettingApprovalRules): any;
export declare function devopsProjectRepositorySettingApprovalRulesToHclTerraform(struct?: DevopsProjectRepositorySettingApprovalRulesOutputReference | DevopsProjectRepositorySettingApprovalRules): any;
export declare class DevopsProjectRepositorySettingApprovalRulesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): DevopsProjectRepositorySettingApprovalRules | undefined;
    set internalValue(value: DevopsProjectRepositorySettingApprovalRules | undefined);
    private _items;
    get items(): DevopsProjectRepositorySettingApprovalRulesItemsList;
    putItems(value: DevopsProjectRepositorySettingApprovalRulesItems[] | cdktf.IResolvable): void;
    get itemsInput(): cdktf.IResolvable | DevopsProjectRepositorySettingApprovalRulesItems[] | undefined;
}
export interface DevopsProjectRepositorySettingMergeSettings {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#allowed_merge_strategies DevopsProjectRepositorySetting#allowed_merge_strategies}
    */
    readonly allowedMergeStrategies: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#default_merge_strategy DevopsProjectRepositorySetting#default_merge_strategy}
    */
    readonly defaultMergeStrategy: string;
}
export declare function devopsProjectRepositorySettingMergeSettingsToTerraform(struct?: DevopsProjectRepositorySettingMergeSettingsOutputReference | DevopsProjectRepositorySettingMergeSettings): any;
export declare function devopsProjectRepositorySettingMergeSettingsToHclTerraform(struct?: DevopsProjectRepositorySettingMergeSettingsOutputReference | DevopsProjectRepositorySettingMergeSettings): any;
export declare class DevopsProjectRepositorySettingMergeSettingsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): DevopsProjectRepositorySettingMergeSettings | undefined;
    set internalValue(value: DevopsProjectRepositorySettingMergeSettings | undefined);
    private _allowedMergeStrategies?;
    get allowedMergeStrategies(): string[];
    set allowedMergeStrategies(value: string[]);
    get allowedMergeStrategiesInput(): string[] | undefined;
    private _defaultMergeStrategy?;
    get defaultMergeStrategy(): string;
    set defaultMergeStrategy(value: string);
    get defaultMergeStrategyInput(): string | undefined;
}
export interface DevopsProjectRepositorySettingTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#create DevopsProjectRepositorySetting#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#delete DevopsProjectRepositorySetting#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#update DevopsProjectRepositorySetting#update}
    */
    readonly update?: string;
}
export declare function devopsProjectRepositorySettingTimeoutsToTerraform(struct?: DevopsProjectRepositorySettingTimeouts | cdktf.IResolvable): any;
export declare function devopsProjectRepositorySettingTimeoutsToHclTerraform(struct?: DevopsProjectRepositorySettingTimeouts | cdktf.IResolvable): any;
export declare class DevopsProjectRepositorySettingTimeoutsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): DevopsProjectRepositorySettingTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: DevopsProjectRepositorySettingTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
    private _delete?;
    get delete(): string;
    set delete(value: string);
    resetDelete(): void;
    get deleteInput(): string | undefined;
    private _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting oci_devops_project_repository_setting}
*/
export declare class DevopsProjectRepositorySetting extends cdktf.TerraformResource {
    static readonly tfResourceType = "oci_devops_project_repository_setting";
    /**
    * Generates CDKTF code for importing a DevopsProjectRepositorySetting resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the DevopsProjectRepositorySetting to import
    * @param importFromId The id of the existing DevopsProjectRepositorySetting that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the DevopsProjectRepositorySetting to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/devops_project_repository_setting oci_devops_project_repository_setting} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options DevopsProjectRepositorySettingConfig
    */
    constructor(scope: Construct, id: string, config: DevopsProjectRepositorySettingConfig);
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _projectId?;
    get projectId(): string;
    set projectId(value: string);
    get projectIdInput(): string | undefined;
    private _approvalRules;
    get approvalRules(): DevopsProjectRepositorySettingApprovalRulesOutputReference;
    putApprovalRules(value: DevopsProjectRepositorySettingApprovalRules): void;
    resetApprovalRules(): void;
    get approvalRulesInput(): DevopsProjectRepositorySettingApprovalRules | undefined;
    private _mergeSettings;
    get mergeSettings(): DevopsProjectRepositorySettingMergeSettingsOutputReference;
    putMergeSettings(value: DevopsProjectRepositorySettingMergeSettings): void;
    resetMergeSettings(): void;
    get mergeSettingsInput(): DevopsProjectRepositorySettingMergeSettings | undefined;
    private _timeouts;
    get timeouts(): DevopsProjectRepositorySettingTimeoutsOutputReference;
    putTimeouts(value: DevopsProjectRepositorySettingTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | DevopsProjectRepositorySettingTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
