import * as core from "@terrascript/core"; export interface ExpressionArgs extends core.SchemaArgs { key: string | core.StringOut; values: core.Array | core.ArrayOut; } export class Expression extends core.Schema { @core.attr(String) public key!: string | core.StringOut; @core.attr(String, { kind: "array" }) public values!: core.Array | core.ArrayOut; } export interface LfTagPolicyArgs extends core.SchemaArgs { catalogId?: string | core.StringOut; expression: core.Array | core.ArrayOut; resourceType: string | core.StringOut; } export class LfTagPolicy extends core.Schema { @core.attr(String, { computed: true }) public catalogId?: string | core.StringOut; @core.attr(Expression, { kind: "array" }) public expression!: core.Array | core.ArrayOut; @core.attr(String) public resourceType!: string | core.StringOut; } export interface DataLocationArgs extends core.SchemaArgs { arn: string | core.StringOut; catalogId?: string | core.StringOut; } export class DataLocation extends core.Schema { @core.attr(String) public arn!: string | core.StringOut; @core.attr(String, { computed: true }) public catalogId?: string | core.StringOut; } export interface DatabaseArgs extends core.SchemaArgs { catalogId?: string | core.StringOut; name: string | core.StringOut; } export class Database extends core.Schema { @core.attr(String, { computed: true }) public catalogId?: string | core.StringOut; @core.attr(String) public name!: string | core.StringOut; } export interface LfTagArgs extends core.SchemaArgs { catalogId?: string | core.StringOut; key: string | core.StringOut; values: core.Array | core.ArrayOut; } export class LfTag extends core.Schema { @core.attr(String, { computed: true }) public catalogId?: string | core.StringOut; @core.attr(String) public key!: string | core.StringOut; @core.attr(String, { kind: "array" }) public values!: core.Array | core.ArrayOut; } export interface TableArgs extends core.SchemaArgs { catalogId?: string | core.StringOut; databaseName: string | core.StringOut; name?: string | core.StringOut; wildcard?: boolean | core.BooleanOut; } export class Table extends core.Schema { @core.attr(String, { computed: true }) public catalogId?: string | core.StringOut; @core.attr(String) public databaseName!: string | core.StringOut; @core.attr(String, { computed: true }) public name?: string | core.StringOut; @core.attr(Boolean) public wildcard?: boolean | core.BooleanOut; } export interface TableWithColumnsArgs extends core.SchemaArgs { catalogId?: string | core.StringOut; columnNames?: core.Array | core.ArrayOut; databaseName: string | core.StringOut; excludedColumnNames?: core.Array | core.ArrayOut; name: string | core.StringOut; wildcard?: boolean | core.BooleanOut; } export class TableWithColumns extends core.Schema { @core.attr(String, { computed: true }) public catalogId?: string | core.StringOut; @core.attr(String, { kind: "array" }) public columnNames?: core.Array | core.ArrayOut; @core.attr(String) public databaseName!: string | core.StringOut; @core.attr(String, { kind: "array" }) public excludedColumnNames?: | core.Array | core.ArrayOut; @core.attr(String) public name!: string | core.StringOut; @core.attr(Boolean) public wildcard?: boolean | core.BooleanOut; } export interface DsPermissionsArgs { /** * (Optional) Identifier for the Data Catalog where the location is registered with Lake Formation. By * default, it is the account ID of the caller. */ catalogId?: string | core.StringOut; /** * Whether the permissions are to be granted for the Data Catalog. Defaults to `false`. */ catalogResource?: boolean | core.BooleanOut; /** * Configuration block for a data location resource. Detailed below. */ dataLocation?: DataLocation; /** * Configuration block for a database resource. Detailed below. */ database?: Database; /** * (Optional) Configuration block for an LF-tag resource. Detailed below. */ lfTag?: LfTag; /** * (Optional) Configuration block for an LF-tag policy resource. Detailed below. */ lfTagPolicy?: LfTagPolicy; principal: string | core.StringOut; /** * Configuration block for a table resource. Detailed below. */ table?: Table; /** * Configuration block for a table with columns resource. Detailed below. */ tableWithColumns?: TableWithColumns; } export class DsPermissions extends core.Data { /** * (Optional) Identifier for the Data Catalog where the location is registered with Lake Formation. By * default, it is the account ID of the caller. */ @core.attr(String) public catalogId?: string | core.StringOut; /** * Whether the permissions are to be granted for the Data Catalog. Defaults to `false`. */ @core.attr(Boolean) public catalogResource?: boolean | core.BooleanOut; /** * Configuration block for a data location resource. Detailed below. */ @core.attr(DataLocation, { computed: true }) public dataLocation?: DataLocation; /** * Configuration block for a database resource. Detailed below. */ @core.attr(Database, { computed: true }) public database?: Database; @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional) Configuration block for an LF-tag resource. Detailed below. */ @core.attr(LfTag, { computed: true }) public lfTag?: LfTag; /** * (Optional) Configuration block for an LF-tag policy resource. Detailed below. */ @core.attr(LfTagPolicy, { computed: true }) public lfTagPolicy?: LfTagPolicy; @core.attr(String, { computed: true, kind: "array" }) public permissions!: core.Array | core.ArrayOut; /** * Subset of `permissions` which the principal can pass. */ @core.attr(String, { computed: true, kind: "array" }) public permissionsWithGrantOption!: | core.Array | core.ArrayOut; @core.attr(String) public principal!: string | core.StringOut; /** * Configuration block for a table resource. Detailed below. */ @core.attr(Table, { computed: true }) public table?: Table; /** * Configuration block for a table with columns resource. Detailed below. */ @core.attr(TableWithColumns, { computed: true }) public tableWithColumns?: TableWithColumns; constructor(name: string, args?: DsPermissionsArgs) { super(name, "aws_lakeformation_permissions", args); } public override getNamespace(): string { return "aws_lakeformation"; } }