import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface GithubProviderConfig {
    /**
    * The GitHub Base API URL
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/github#base_url GithubProvider#base_url}
    */
    readonly baseUrl?: string;
    /**
    * Enable `insecure` mode for testing purposes
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/github#insecure GithubProvider#insecure}
    */
    readonly insecure?: boolean | cdktf.IResolvable;
    /**
    * The GitHub organization name to manage. Use this field instead of `owner` when managing organization accounts.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/github#organization GithubProvider#organization}
    */
    readonly organization?: string;
    /**
    * The GitHub owner name to manage. Use this field instead of `organization` when managing individual accounts.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/github#owner GithubProvider#owner}
    */
    readonly owner?: string;
    /**
    * Amount of time in milliseconds to sleep in between non-write requests to GitHub API. Defaults to 0ms if not set.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/github#read_delay_ms GithubProvider#read_delay_ms}
    */
    readonly readDelayMs?: number;
    /**
    * The OAuth token used to connect to GitHub. Anonymous mode is enabled if both `token` and `app_auth` are not set.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/github#token GithubProvider#token}
    */
    readonly token?: string;
    /**
    * Amount of time in milliseconds to sleep in between writes to GitHub API. Defaults to 1000ms or 1s if not set.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/github#write_delay_ms GithubProvider#write_delay_ms}
    */
    readonly writeDelayMs?: number;
    /**
    * Alias name
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/github#alias GithubProvider#alias}
    */
    readonly alias?: string;
    /**
    * app_auth block
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/github#app_auth GithubProvider#app_auth}
    */
    readonly appAuth?: GithubProviderAppAuth;
}
export interface GithubProviderAppAuth {
    /**
    * The GitHub App ID.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/github#id GithubProvider#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;
    /**
    * The GitHub App installation instance ID.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/github#installation_id GithubProvider#installation_id}
    */
    readonly installationId: string;
    /**
    * The GitHub App PEM file contents.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/github#pem_file GithubProvider#pem_file}
    */
    readonly pemFile: string;
}
export declare function githubProviderAppAuthToTerraform(struct?: GithubProviderAppAuth): any;
/**
* Represents a {@link https://www.terraform.io/docs/providers/github github}
*/
export declare class GithubProvider extends cdktf.TerraformProvider {
    static readonly tfResourceType = "github";
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/github github} 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 GithubProviderConfig = {}
    */
    constructor(scope: Construct, id: string, config?: GithubProviderConfig);
    private _baseUrl?;
    get baseUrl(): string | undefined;
    set baseUrl(value: string | undefined);
    resetBaseUrl(): void;
    get baseUrlInput(): string | undefined;
    private _insecure?;
    get insecure(): boolean | cdktf.IResolvable | undefined;
    set insecure(value: boolean | cdktf.IResolvable | undefined);
    resetInsecure(): void;
    get insecureInput(): boolean | cdktf.IResolvable | undefined;
    private _organization?;
    get organization(): string | undefined;
    set organization(value: string | undefined);
    resetOrganization(): void;
    get organizationInput(): string | undefined;
    private _owner?;
    get owner(): string | undefined;
    set owner(value: string | undefined);
    resetOwner(): void;
    get ownerInput(): string | undefined;
    private _readDelayMs?;
    get readDelayMs(): number | undefined;
    set readDelayMs(value: number | undefined);
    resetReadDelayMs(): void;
    get readDelayMsInput(): number | undefined;
    private _token?;
    get token(): string | undefined;
    set token(value: string | undefined);
    resetToken(): void;
    get tokenInput(): string | undefined;
    private _writeDelayMs?;
    get writeDelayMs(): number | undefined;
    set writeDelayMs(value: number | undefined);
    resetWriteDelayMs(): void;
    get writeDelayMsInput(): number | undefined;
    private _alias?;
    get alias(): string | undefined;
    set alias(value: string | undefined);
    resetAlias(): void;
    get aliasInput(): string | undefined;
    private _appAuth?;
    get appAuth(): GithubProviderAppAuth | undefined;
    set appAuth(value: GithubProviderAppAuth | undefined);
    resetAppAuth(): void;
    get appAuthInput(): GithubProviderAppAuth | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
}
