import * as core from "@terrascript/core";

export interface ConnectorProfilePropertiesGoogleAnalyticsArgs
  extends core.SchemaArgs {}

export class ConnectorProfilePropertiesGoogleAnalytics extends core.Schema<ConnectorProfilePropertiesGoogleAnalyticsArgs> {}

export interface ConnectorProfilePropertiesInforNexusArgs
  extends core.SchemaArgs {
  instanceUrl: string | core.StringOut;
}

export class ConnectorProfilePropertiesInforNexus extends core.Schema<ConnectorProfilePropertiesInforNexusArgs> {
  @core.attr(String)
  public instanceUrl!: string | core.StringOut;
}

export interface Oauth2PropertiesArgs extends core.SchemaArgs {
  oauth2GrantType: string | core.StringOut;

  tokenUrl: string | core.StringOut;

  tokenUrlCustomProperties?:
    | core.Map<string, string>
    | core.MapOut<core.StringOut>;
}

export class Oauth2Properties extends core.Schema<Oauth2PropertiesArgs> {
  @core.attr(String)
  public oauth2GrantType!: string | core.StringOut;

  @core.attr(String)
  public tokenUrl!: string | core.StringOut;

  @core.attr(String, { kind: "map" })
  public tokenUrlCustomProperties?:
    | core.Map<string, string>
    | core.MapOut<core.StringOut>;
}

export interface ConnectorProfilePropertiesCustomConnectorArgs
  extends core.SchemaArgs {
  oauth2Properties?: Oauth2Properties;

  profileProperties?: core.Map<string, string> | core.MapOut<core.StringOut>;
}

export class ConnectorProfilePropertiesCustomConnector extends core.Schema<ConnectorProfilePropertiesCustomConnectorArgs> {
  @core.attr(Oauth2Properties)
  public oauth2Properties?: Oauth2Properties;

  @core.attr(String, { kind: "map" })
  public profileProperties?:
    | core.Map<string, string>
    | core.MapOut<core.StringOut>;
}

export interface OauthPropertiesArgs extends core.SchemaArgs {
  authCodeUrl: string | core.StringOut;

  oauthScopes: core.Array<string> | core.ArrayOut<core.StringOut>;

  tokenUrl: string | core.StringOut;
}

export class OauthProperties extends core.Schema<OauthPropertiesArgs> {
  @core.attr(String)
  public authCodeUrl!: string | core.StringOut;

  @core.attr(String, { kind: "array" })
  public oauthScopes!: core.Array<string> | core.ArrayOut<core.StringOut>;

  @core.attr(String)
  public tokenUrl!: string | core.StringOut;
}

export interface ConnectorProfilePropertiesSapoDataArgs
  extends core.SchemaArgs {
  applicationHostUrl: string | core.StringOut;

  applicationServicePath: string | core.StringOut;

  clientNumber: string | core.StringOut;

  logonLanguage?: string | core.StringOut;

  oauthProperties?: OauthProperties;

  portNumber: number | core.NumberOut;

  privateLinkServiceName?: string | core.StringOut;
}

export class ConnectorProfilePropertiesSapoData extends core.Schema<ConnectorProfilePropertiesSapoDataArgs> {
  @core.attr(String)
  public applicationHostUrl!: string | core.StringOut;

  @core.attr(String)
  public applicationServicePath!: string | core.StringOut;

  @core.attr(String)
  public clientNumber!: string | core.StringOut;

  @core.attr(String)
  public logonLanguage?: string | core.StringOut;

  @core.attr(OauthProperties)
  public oauthProperties?: OauthProperties;

  @core.attr(Number)
  public portNumber!: number | core.NumberOut;

  @core.attr(String)
  public privateLinkServiceName?: string | core.StringOut;
}

export interface ConnectorProfilePropertiesAmplitudeArgs
  extends core.SchemaArgs {}

export class ConnectorProfilePropertiesAmplitude extends core.Schema<ConnectorProfilePropertiesAmplitudeArgs> {}

export interface ConnectorProfilePropertiesTrendmicroArgs
  extends core.SchemaArgs {}

export class ConnectorProfilePropertiesTrendmicro extends core.Schema<ConnectorProfilePropertiesTrendmicroArgs> {}

export interface ConnectorProfilePropertiesSingularArgs
  extends core.SchemaArgs {}

export class ConnectorProfilePropertiesSingular extends core.Schema<ConnectorProfilePropertiesSingularArgs> {}

export interface ConnectorProfilePropertiesServiceNowArgs
  extends core.SchemaArgs {
  instanceUrl: string | core.StringOut;
}

export class ConnectorProfilePropertiesServiceNow extends core.Schema<ConnectorProfilePropertiesServiceNowArgs> {
  @core.attr(String)
  public instanceUrl!: string | core.StringOut;
}

export interface ConnectorProfilePropertiesSlackArgs extends core.SchemaArgs {
  instanceUrl: string | core.StringOut;
}

export class ConnectorProfilePropertiesSlack extends core.Schema<ConnectorProfilePropertiesSlackArgs> {
  @core.attr(String)
  public instanceUrl!: string | core.StringOut;
}

export interface ConnectorProfilePropertiesZendeskArgs extends core.SchemaArgs {
  instanceUrl: string | core.StringOut;
}

export class ConnectorProfilePropertiesZendesk extends core.Schema<ConnectorProfilePropertiesZendeskArgs> {
  @core.attr(String)
  public instanceUrl!: string | core.StringOut;
}

export interface ConnectorProfilePropertiesSalesforceArgs
  extends core.SchemaArgs {
  instanceUrl?: string | core.StringOut;

  isSandboxEnvironment?: boolean | core.BooleanOut;
}

export class ConnectorProfilePropertiesSalesforce extends core.Schema<ConnectorProfilePropertiesSalesforceArgs> {
  @core.attr(String)
  public instanceUrl?: string | core.StringOut;

  @core.attr(Boolean)
  public isSandboxEnvironment?: boolean | core.BooleanOut;
}

export interface ConnectorProfilePropertiesMarketoArgs extends core.SchemaArgs {
  instanceUrl: string | core.StringOut;
}

export class ConnectorProfilePropertiesMarketo extends core.Schema<ConnectorProfilePropertiesMarketoArgs> {
  @core.attr(String)
  public instanceUrl!: string | core.StringOut;
}

export interface ConnectorProfilePropertiesDynatraceArgs
  extends core.SchemaArgs {
  instanceUrl: string | core.StringOut;
}

export class ConnectorProfilePropertiesDynatrace extends core.Schema<ConnectorProfilePropertiesDynatraceArgs> {
  @core.attr(String)
  public instanceUrl!: string | core.StringOut;
}

export interface ConnectorProfilePropertiesDatadogArgs extends core.SchemaArgs {
  instanceUrl: string | core.StringOut;
}

export class ConnectorProfilePropertiesDatadog extends core.Schema<ConnectorProfilePropertiesDatadogArgs> {
  @core.attr(String)
  public instanceUrl!: string | core.StringOut;
}

export interface ConnectorProfilePropertiesSnowflakeArgs
  extends core.SchemaArgs {
  accountName?: string | core.StringOut;

  bucketName: string | core.StringOut;

  bucketPrefix?: string | core.StringOut;

  privateLinkServiceName?: string | core.StringOut;

  region?: string | core.StringOut;

  stage: string | core.StringOut;

  warehouse: string | core.StringOut;
}

export class ConnectorProfilePropertiesSnowflake extends core.Schema<ConnectorProfilePropertiesSnowflakeArgs> {
  @core.attr(String)
  public accountName?: string | core.StringOut;

  @core.attr(String)
  public bucketName!: string | core.StringOut;

  @core.attr(String)
  public bucketPrefix?: string | core.StringOut;

  @core.attr(String)
  public privateLinkServiceName?: string | core.StringOut;

  @core.attr(String)
  public region?: string | core.StringOut;

  @core.attr(String)
  public stage!: string | core.StringOut;

  @core.attr(String)
  public warehouse!: string | core.StringOut;
}

export interface ConnectorProfilePropertiesRedshiftArgs
  extends core.SchemaArgs {
  bucketName: string | core.StringOut;

  bucketPrefix?: string | core.StringOut;

  databaseUrl?: string | core.StringOut;

  roleArn: string | core.StringOut;
}

export class ConnectorProfilePropertiesRedshift extends core.Schema<ConnectorProfilePropertiesRedshiftArgs> {
  @core.attr(String)
  public bucketName!: string | core.StringOut;

  @core.attr(String)
  public bucketPrefix?: string | core.StringOut;

  @core.attr(String)
  public databaseUrl?: string | core.StringOut;

  @core.attr(String)
  public roleArn!: string | core.StringOut;
}

export interface ConnectorProfilePropertiesHoneycodeArgs
  extends core.SchemaArgs {}

export class ConnectorProfilePropertiesHoneycode extends core.Schema<ConnectorProfilePropertiesHoneycodeArgs> {}

export interface ConnectorProfilePropertiesVeevaArgs extends core.SchemaArgs {
  instanceUrl: string | core.StringOut;
}

export class ConnectorProfilePropertiesVeeva extends core.Schema<ConnectorProfilePropertiesVeevaArgs> {
  @core.attr(String)
  public instanceUrl!: string | core.StringOut;
}

export interface ConnectorProfilePropertiesArgs extends core.SchemaArgs {
  amplitude?: ConnectorProfilePropertiesAmplitude;

  customConnector?: ConnectorProfilePropertiesCustomConnector;

  datadog?: ConnectorProfilePropertiesDatadog;

  dynatrace?: ConnectorProfilePropertiesDynatrace;

  googleAnalytics?: ConnectorProfilePropertiesGoogleAnalytics;

  honeycode?: ConnectorProfilePropertiesHoneycode;

  inforNexus?: ConnectorProfilePropertiesInforNexus;

  marketo?: ConnectorProfilePropertiesMarketo;

  redshift?: ConnectorProfilePropertiesRedshift;

  salesforce?: ConnectorProfilePropertiesSalesforce;

  sapoData?: ConnectorProfilePropertiesSapoData;

  serviceNow?: ConnectorProfilePropertiesServiceNow;

  singular?: ConnectorProfilePropertiesSingular;

  slack?: ConnectorProfilePropertiesSlack;

  snowflake?: ConnectorProfilePropertiesSnowflake;

  trendmicro?: ConnectorProfilePropertiesTrendmicro;

  veeva?: ConnectorProfilePropertiesVeeva;

  zendesk?: ConnectorProfilePropertiesZendesk;
}

export class ConnectorProfileProperties extends core.Schema<ConnectorProfilePropertiesArgs> {
  @core.attr(ConnectorProfilePropertiesAmplitude)
  public amplitude?: ConnectorProfilePropertiesAmplitude;

  @core.attr(ConnectorProfilePropertiesCustomConnector)
  public customConnector?: ConnectorProfilePropertiesCustomConnector;

  @core.attr(ConnectorProfilePropertiesDatadog)
  public datadog?: ConnectorProfilePropertiesDatadog;

  @core.attr(ConnectorProfilePropertiesDynatrace)
  public dynatrace?: ConnectorProfilePropertiesDynatrace;

  @core.attr(ConnectorProfilePropertiesGoogleAnalytics)
  public googleAnalytics?: ConnectorProfilePropertiesGoogleAnalytics;

  @core.attr(ConnectorProfilePropertiesHoneycode)
  public honeycode?: ConnectorProfilePropertiesHoneycode;

  @core.attr(ConnectorProfilePropertiesInforNexus)
  public inforNexus?: ConnectorProfilePropertiesInforNexus;

  @core.attr(ConnectorProfilePropertiesMarketo)
  public marketo?: ConnectorProfilePropertiesMarketo;

  @core.attr(ConnectorProfilePropertiesRedshift)
  public redshift?: ConnectorProfilePropertiesRedshift;

  @core.attr(ConnectorProfilePropertiesSalesforce)
  public salesforce?: ConnectorProfilePropertiesSalesforce;

  @core.attr(ConnectorProfilePropertiesSapoData)
  public sapoData?: ConnectorProfilePropertiesSapoData;

  @core.attr(ConnectorProfilePropertiesServiceNow)
  public serviceNow?: ConnectorProfilePropertiesServiceNow;

  @core.attr(ConnectorProfilePropertiesSingular)
  public singular?: ConnectorProfilePropertiesSingular;

  @core.attr(ConnectorProfilePropertiesSlack)
  public slack?: ConnectorProfilePropertiesSlack;

  @core.attr(ConnectorProfilePropertiesSnowflake)
  public snowflake?: ConnectorProfilePropertiesSnowflake;

  @core.attr(ConnectorProfilePropertiesTrendmicro)
  public trendmicro?: ConnectorProfilePropertiesTrendmicro;

  @core.attr(ConnectorProfilePropertiesVeeva)
  public veeva?: ConnectorProfilePropertiesVeeva;

  @core.attr(ConnectorProfilePropertiesZendesk)
  public zendesk?: ConnectorProfilePropertiesZendesk;
}

export interface OauthRequestArgs extends core.SchemaArgs {
  authCode?: string | core.StringOut;

  redirectUri?: string | core.StringOut;
}

export class OauthRequest extends core.Schema<OauthRequestArgs> {
  @core.attr(String)
  public authCode?: string | core.StringOut;

  @core.attr(String)
  public redirectUri?: string | core.StringOut;
}

export interface ConnectorProfileCredentialsGoogleAnalyticsArgs
  extends core.SchemaArgs {
  accessToken?: string | core.StringOut;

  clientId: string | core.StringOut;

  clientSecret: string | core.StringOut;

  oauthRequest?: OauthRequest;

  refreshToken?: string | core.StringOut;
}

export class ConnectorProfileCredentialsGoogleAnalytics extends core.Schema<ConnectorProfileCredentialsGoogleAnalyticsArgs> {
  @core.attr(String)
  public accessToken?: string | core.StringOut;

  @core.attr(String)
  public clientId!: string | core.StringOut;

  @core.attr(String)
  public clientSecret!: string | core.StringOut;

  @core.attr(OauthRequest)
  public oauthRequest?: OauthRequest;

  @core.attr(String)
  public refreshToken?: string | core.StringOut;
}

export interface BasicAuthCredentialsArgs extends core.SchemaArgs {
  password: string | core.StringOut;

  username: string | core.StringOut;
}

export class BasicAuthCredentials extends core.Schema<BasicAuthCredentialsArgs> {
  @core.attr(String)
  public password!: string | core.StringOut;

  @core.attr(String)
  public username!: string | core.StringOut;
}

export interface OauthCredentialsArgs extends core.SchemaArgs {
  accessToken?: string | core.StringOut;

  clientId: string | core.StringOut;

  clientSecret: string | core.StringOut;

  oauthRequest?: OauthRequest;

  refreshToken?: string | core.StringOut;
}

export class OauthCredentials extends core.Schema<OauthCredentialsArgs> {
  @core.attr(String)
  public accessToken?: string | core.StringOut;

  @core.attr(String)
  public clientId!: string | core.StringOut;

  @core.attr(String)
  public clientSecret!: string | core.StringOut;

  @core.attr(OauthRequest)
  public oauthRequest?: OauthRequest;

  @core.attr(String)
  public refreshToken?: string | core.StringOut;
}

export interface ConnectorProfileCredentialsSapoDataArgs
  extends core.SchemaArgs {
  basicAuthCredentials?: BasicAuthCredentials;

  oauthCredentials?: OauthCredentials;
}

export class ConnectorProfileCredentialsSapoData extends core.Schema<ConnectorProfileCredentialsSapoDataArgs> {
  @core.attr(BasicAuthCredentials)
  public basicAuthCredentials?: BasicAuthCredentials;

  @core.attr(OauthCredentials)
  public oauthCredentials?: OauthCredentials;
}

export interface ConnectorProfileCredentialsAmplitudeArgs
  extends core.SchemaArgs {
  apiKey: string | core.StringOut;

  secretKey: string | core.StringOut;
}

export class ConnectorProfileCredentialsAmplitude extends core.Schema<ConnectorProfileCredentialsAmplitudeArgs> {
  @core.attr(String)
  public apiKey!: string | core.StringOut;

  @core.attr(String)
  public secretKey!: string | core.StringOut;
}

export interface ConnectorProfileCredentialsSlackArgs extends core.SchemaArgs {
  accessToken?: string | core.StringOut;

  clientId: string | core.StringOut;

  clientSecret: string | core.StringOut;

  oauthRequest?: OauthRequest;
}

export class ConnectorProfileCredentialsSlack extends core.Schema<ConnectorProfileCredentialsSlackArgs> {
  @core.attr(String)
  public accessToken?: string | core.StringOut;

  @core.attr(String)
  public clientId!: string | core.StringOut;

  @core.attr(String)
  public clientSecret!: string | core.StringOut;

  @core.attr(OauthRequest)
  public oauthRequest?: OauthRequest;
}

export interface ConnectorProfileCredentialsTrendmicroArgs
  extends core.SchemaArgs {
  apiSecretKey: string | core.StringOut;
}

export class ConnectorProfileCredentialsTrendmicro extends core.Schema<ConnectorProfileCredentialsTrendmicroArgs> {
  @core.attr(String)
  public apiSecretKey!: string | core.StringOut;
}

export interface ApiKeyArgs extends core.SchemaArgs {
  apiKey: string | core.StringOut;

  apiSecretKey?: string | core.StringOut;
}

export class ApiKey extends core.Schema<ApiKeyArgs> {
  @core.attr(String)
  public apiKey!: string | core.StringOut;

  @core.attr(String)
  public apiSecretKey?: string | core.StringOut;
}

export interface BasicArgs extends core.SchemaArgs {
  password: string | core.StringOut;

  username: string | core.StringOut;
}

export class Basic extends core.Schema<BasicArgs> {
  @core.attr(String)
  public password!: string | core.StringOut;

  @core.attr(String)
  public username!: string | core.StringOut;
}

export interface CustomArgs extends core.SchemaArgs {
  credentialsMap?: core.Map<string, string> | core.MapOut<core.StringOut>;

  customAuthenticationType: string | core.StringOut;
}

export class Custom extends core.Schema<CustomArgs> {
  @core.attr(String, { kind: "map" })
  public credentialsMap?:
    | core.Map<string, string>
    | core.MapOut<core.StringOut>;

  @core.attr(String)
  public customAuthenticationType!: string | core.StringOut;
}

export interface Oauth2Args extends core.SchemaArgs {
  accessToken?: string | core.StringOut;

  clientId?: string | core.StringOut;

  clientSecret?: string | core.StringOut;

  oauthRequest?: OauthRequest;

  refreshToken?: string | core.StringOut;
}

export class Oauth2 extends core.Schema<Oauth2Args> {
  @core.attr(String)
  public accessToken?: string | core.StringOut;

  @core.attr(String)
  public clientId?: string | core.StringOut;

  @core.attr(String)
  public clientSecret?: string | core.StringOut;

  @core.attr(OauthRequest)
  public oauthRequest?: OauthRequest;

  @core.attr(String)
  public refreshToken?: string | core.StringOut;
}

export interface ConnectorProfileCredentialsCustomConnectorArgs
  extends core.SchemaArgs {
  apiKey?: ApiKey;

  authenticationType: string | core.StringOut;

  basic?: Basic;

  custom?: Custom;

  oauth2?: Oauth2;
}

export class ConnectorProfileCredentialsCustomConnector extends core.Schema<ConnectorProfileCredentialsCustomConnectorArgs> {
  @core.attr(ApiKey)
  public apiKey?: ApiKey;

  @core.attr(String)
  public authenticationType!: string | core.StringOut;

  @core.attr(Basic)
  public basic?: Basic;

  @core.attr(Custom)
  public custom?: Custom;

  @core.attr(Oauth2)
  public oauth2?: Oauth2;
}

export interface ConnectorProfileCredentialsSalesforceArgs
  extends core.SchemaArgs {
  accessToken?: string | core.StringOut;

  clientCredentialsArn?: string | core.StringOut;

  oauthRequest?: OauthRequest;

  refreshToken?: string | core.StringOut;
}

export class ConnectorProfileCredentialsSalesforce extends core.Schema<ConnectorProfileCredentialsSalesforceArgs> {
  @core.attr(String)
  public accessToken?: string | core.StringOut;

  @core.attr(String)
  public clientCredentialsArn?: string | core.StringOut;

  @core.attr(OauthRequest)
  public oauthRequest?: OauthRequest;

  @core.attr(String)
  public refreshToken?: string | core.StringOut;
}

export interface ConnectorProfileCredentialsZendeskArgs
  extends core.SchemaArgs {
  accessToken?: string | core.StringOut;

  clientId: string | core.StringOut;

  clientSecret: string | core.StringOut;

  oauthRequest?: OauthRequest;
}

export class ConnectorProfileCredentialsZendesk extends core.Schema<ConnectorProfileCredentialsZendeskArgs> {
  @core.attr(String)
  public accessToken?: string | core.StringOut;

  @core.attr(String)
  public clientId!: string | core.StringOut;

  @core.attr(String)
  public clientSecret!: string | core.StringOut;

  @core.attr(OauthRequest)
  public oauthRequest?: OauthRequest;
}

export interface ConnectorProfileCredentialsRedshiftArgs
  extends core.SchemaArgs {
  password: string | core.StringOut;

  username: string | core.StringOut;
}

export class ConnectorProfileCredentialsRedshift extends core.Schema<ConnectorProfileCredentialsRedshiftArgs> {
  @core.attr(String)
  public password!: string | core.StringOut;

  @core.attr(String)
  public username!: string | core.StringOut;
}

export interface ConnectorProfileCredentialsDatadogArgs
  extends core.SchemaArgs {
  apiKey: string | core.StringOut;

  applicationKey: string | core.StringOut;
}

export class ConnectorProfileCredentialsDatadog extends core.Schema<ConnectorProfileCredentialsDatadogArgs> {
  @core.attr(String)
  public apiKey!: string | core.StringOut;

  @core.attr(String)
  public applicationKey!: string | core.StringOut;
}

export interface ConnectorProfileCredentialsDynatraceArgs
  extends core.SchemaArgs {
  apiToken: string | core.StringOut;
}

export class ConnectorProfileCredentialsDynatrace extends core.Schema<ConnectorProfileCredentialsDynatraceArgs> {
  @core.attr(String)
  public apiToken!: string | core.StringOut;
}

export interface ConnectorProfileCredentialsInforNexusArgs
  extends core.SchemaArgs {
  accessKeyId: string | core.StringOut;

  datakey: string | core.StringOut;

  secretAccessKey: string | core.StringOut;

  userId: string | core.StringOut;
}

export class ConnectorProfileCredentialsInforNexus extends core.Schema<ConnectorProfileCredentialsInforNexusArgs> {
  @core.attr(String)
  public accessKeyId!: string | core.StringOut;

  @core.attr(String)
  public datakey!: string | core.StringOut;

  @core.attr(String)
  public secretAccessKey!: string | core.StringOut;

  @core.attr(String)
  public userId!: string | core.StringOut;
}

export interface ConnectorProfileCredentialsServiceNowArgs
  extends core.SchemaArgs {
  password: string | core.StringOut;

  username: string | core.StringOut;
}

export class ConnectorProfileCredentialsServiceNow extends core.Schema<ConnectorProfileCredentialsServiceNowArgs> {
  @core.attr(String)
  public password!: string | core.StringOut;

  @core.attr(String)
  public username!: string | core.StringOut;
}

export interface ConnectorProfileCredentialsVeevaArgs extends core.SchemaArgs {
  password: string | core.StringOut;

  username: string | core.StringOut;
}

export class ConnectorProfileCredentialsVeeva extends core.Schema<ConnectorProfileCredentialsVeevaArgs> {
  @core.attr(String)
  public password!: string | core.StringOut;

  @core.attr(String)
  public username!: string | core.StringOut;
}

export interface ConnectorProfileCredentialsHoneycodeArgs
  extends core.SchemaArgs {
  accessToken?: string | core.StringOut;

  oauthRequest?: OauthRequest;

  refreshToken?: string | core.StringOut;
}

export class ConnectorProfileCredentialsHoneycode extends core.Schema<ConnectorProfileCredentialsHoneycodeArgs> {
  @core.attr(String)
  public accessToken?: string | core.StringOut;

  @core.attr(OauthRequest)
  public oauthRequest?: OauthRequest;

  @core.attr(String)
  public refreshToken?: string | core.StringOut;
}

export interface ConnectorProfileCredentialsSnowflakeArgs
  extends core.SchemaArgs {
  password: string | core.StringOut;

  username: string | core.StringOut;
}

export class ConnectorProfileCredentialsSnowflake extends core.Schema<ConnectorProfileCredentialsSnowflakeArgs> {
  @core.attr(String)
  public password!: string | core.StringOut;

  @core.attr(String)
  public username!: string | core.StringOut;
}

export interface ConnectorProfileCredentialsSingularArgs
  extends core.SchemaArgs {
  apiKey: string | core.StringOut;
}

export class ConnectorProfileCredentialsSingular extends core.Schema<ConnectorProfileCredentialsSingularArgs> {
  @core.attr(String)
  public apiKey!: string | core.StringOut;
}

export interface ConnectorProfileCredentialsMarketoArgs
  extends core.SchemaArgs {
  accessToken?: string | core.StringOut;

  clientId: string | core.StringOut;

  clientSecret: string | core.StringOut;

  oauthRequest?: OauthRequest;
}

export class ConnectorProfileCredentialsMarketo extends core.Schema<ConnectorProfileCredentialsMarketoArgs> {
  @core.attr(String)
  public accessToken?: string | core.StringOut;

  @core.attr(String)
  public clientId!: string | core.StringOut;

  @core.attr(String)
  public clientSecret!: string | core.StringOut;

  @core.attr(OauthRequest)
  public oauthRequest?: OauthRequest;
}

export interface ConnectorProfileCredentialsArgs extends core.SchemaArgs {
  amplitude?: ConnectorProfileCredentialsAmplitude;

  customConnector?: ConnectorProfileCredentialsCustomConnector;

  datadog?: ConnectorProfileCredentialsDatadog;

  dynatrace?: ConnectorProfileCredentialsDynatrace;

  googleAnalytics?: ConnectorProfileCredentialsGoogleAnalytics;

  honeycode?: ConnectorProfileCredentialsHoneycode;

  inforNexus?: ConnectorProfileCredentialsInforNexus;

  marketo?: ConnectorProfileCredentialsMarketo;

  redshift?: ConnectorProfileCredentialsRedshift;

  salesforce?: ConnectorProfileCredentialsSalesforce;

  sapoData?: ConnectorProfileCredentialsSapoData;

  serviceNow?: ConnectorProfileCredentialsServiceNow;

  singular?: ConnectorProfileCredentialsSingular;

  slack?: ConnectorProfileCredentialsSlack;

  snowflake?: ConnectorProfileCredentialsSnowflake;

  trendmicro?: ConnectorProfileCredentialsTrendmicro;

  veeva?: ConnectorProfileCredentialsVeeva;

  zendesk?: ConnectorProfileCredentialsZendesk;
}

export class ConnectorProfileCredentials extends core.Schema<ConnectorProfileCredentialsArgs> {
  @core.attr(ConnectorProfileCredentialsAmplitude)
  public amplitude?: ConnectorProfileCredentialsAmplitude;

  @core.attr(ConnectorProfileCredentialsCustomConnector)
  public customConnector?: ConnectorProfileCredentialsCustomConnector;

  @core.attr(ConnectorProfileCredentialsDatadog)
  public datadog?: ConnectorProfileCredentialsDatadog;

  @core.attr(ConnectorProfileCredentialsDynatrace)
  public dynatrace?: ConnectorProfileCredentialsDynatrace;

  @core.attr(ConnectorProfileCredentialsGoogleAnalytics)
  public googleAnalytics?: ConnectorProfileCredentialsGoogleAnalytics;

  @core.attr(ConnectorProfileCredentialsHoneycode)
  public honeycode?: ConnectorProfileCredentialsHoneycode;

  @core.attr(ConnectorProfileCredentialsInforNexus)
  public inforNexus?: ConnectorProfileCredentialsInforNexus;

  @core.attr(ConnectorProfileCredentialsMarketo)
  public marketo?: ConnectorProfileCredentialsMarketo;

  @core.attr(ConnectorProfileCredentialsRedshift)
  public redshift?: ConnectorProfileCredentialsRedshift;

  @core.attr(ConnectorProfileCredentialsSalesforce)
  public salesforce?: ConnectorProfileCredentialsSalesforce;

  @core.attr(ConnectorProfileCredentialsSapoData)
  public sapoData?: ConnectorProfileCredentialsSapoData;

  @core.attr(ConnectorProfileCredentialsServiceNow)
  public serviceNow?: ConnectorProfileCredentialsServiceNow;

  @core.attr(ConnectorProfileCredentialsSingular)
  public singular?: ConnectorProfileCredentialsSingular;

  @core.attr(ConnectorProfileCredentialsSlack)
  public slack?: ConnectorProfileCredentialsSlack;

  @core.attr(ConnectorProfileCredentialsSnowflake)
  public snowflake?: ConnectorProfileCredentialsSnowflake;

  @core.attr(ConnectorProfileCredentialsTrendmicro)
  public trendmicro?: ConnectorProfileCredentialsTrendmicro;

  @core.attr(ConnectorProfileCredentialsVeeva)
  public veeva?: ConnectorProfileCredentialsVeeva;

  @core.attr(ConnectorProfileCredentialsZendesk)
  public zendesk?: ConnectorProfileCredentialsZendesk;
}

export interface ConnectorProfileConfigArgs extends core.SchemaArgs {
  connectorProfileCredentials: ConnectorProfileCredentials;

  connectorProfileProperties: ConnectorProfileProperties;
}

export class ConnectorProfileConfig extends core.Schema<ConnectorProfileConfigArgs> {
  @core.attr(ConnectorProfileCredentials)
  public connectorProfileCredentials!: ConnectorProfileCredentials;

  @core.attr(ConnectorProfileProperties)
  public connectorProfileProperties!: ConnectorProfileProperties;
}

export interface ConnectorProfileArgs extends core.ResourceArgs {
  connectionMode: string | core.StringOut;

  connectorLabel?: string | core.StringOut;

  connectorProfileConfig: ConnectorProfileConfig;

  connectorType: string | core.StringOut;

  kmsArn?: string | core.StringOut;

  name: string | core.StringOut;
}

export class ConnectorProfile extends core.Resource<ConnectorProfileArgs> {
  @core.attr(String, { computed: true })
  public arn!: string | core.StringOut;

  @core.attr(String)
  public connectionMode!: string | core.StringOut;

  @core.attr(String)
  public connectorLabel?: string | core.StringOut;

  @core.attr(ConnectorProfileConfig)
  public connectorProfileConfig!: ConnectorProfileConfig;

  @core.attr(String)
  public connectorType!: string | core.StringOut;

  @core.attr(String, { computed: true })
  public credentialsArn!: string | core.StringOut;

  @core.attr(String, { computed: true })
  public id!: string | core.StringOut;

  @core.attr(String, { computed: true })
  public kmsArn?: string | core.StringOut;

  @core.attr(String)
  public name!: string | core.StringOut;

  constructor(name: string, args?: ConnectorProfileArgs) {
    super(name, "aws_appflow_connector_profile", args);
  }

  public override getNamespace(): string {
    return "aws_appflow";
  }
}
