// *** WARNING: this file was generated by test. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package mypkg

import (
	"context"
	"reflect"

	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

// An access key for the storage account.
type StorageAccountKeyResponse struct {
	// Creation time of the key, in round trip date format.
	CreationTime string `pulumi:"creationTime"`
	// Name of the key.
	KeyName string `pulumi:"keyName"`
	// Permissions for the key -- read-only or full permissions.
	Permissions string `pulumi:"permissions"`
	// Base 64-encoded value of the key.
	Value string `pulumi:"value"`
}

// StorageAccountKeyResponseInput is an input type that accepts StorageAccountKeyResponseArgs and StorageAccountKeyResponseOutput values.
// You can construct a concrete instance of `StorageAccountKeyResponseInput` via:
//
//          StorageAccountKeyResponseArgs{...}
type StorageAccountKeyResponseInput interface {
	pulumi.Input

	ToStorageAccountKeyResponseOutput() StorageAccountKeyResponseOutput
	ToStorageAccountKeyResponseOutputWithContext(context.Context) StorageAccountKeyResponseOutput
}

// An access key for the storage account.
type StorageAccountKeyResponseArgs struct {
	// Creation time of the key, in round trip date format.
	CreationTime pulumi.StringInput `pulumi:"creationTime"`
	// Name of the key.
	KeyName pulumi.StringInput `pulumi:"keyName"`
	// Permissions for the key -- read-only or full permissions.
	Permissions pulumi.StringInput `pulumi:"permissions"`
	// Base 64-encoded value of the key.
	Value pulumi.StringInput `pulumi:"value"`
}

func (StorageAccountKeyResponseArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*StorageAccountKeyResponse)(nil)).Elem()
}

func (i StorageAccountKeyResponseArgs) ToStorageAccountKeyResponseOutput() StorageAccountKeyResponseOutput {
	return i.ToStorageAccountKeyResponseOutputWithContext(context.Background())
}

func (i StorageAccountKeyResponseArgs) ToStorageAccountKeyResponseOutputWithContext(ctx context.Context) StorageAccountKeyResponseOutput {
	return pulumi.ToOutputWithContext(ctx, i).(StorageAccountKeyResponseOutput)
}

// StorageAccountKeyResponseArrayInput is an input type that accepts StorageAccountKeyResponseArray and StorageAccountKeyResponseArrayOutput values.
// You can construct a concrete instance of `StorageAccountKeyResponseArrayInput` via:
//
//          StorageAccountKeyResponseArray{ StorageAccountKeyResponseArgs{...} }
type StorageAccountKeyResponseArrayInput interface {
	pulumi.Input

	ToStorageAccountKeyResponseArrayOutput() StorageAccountKeyResponseArrayOutput
	ToStorageAccountKeyResponseArrayOutputWithContext(context.Context) StorageAccountKeyResponseArrayOutput
}

type StorageAccountKeyResponseArray []StorageAccountKeyResponseInput

func (StorageAccountKeyResponseArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]StorageAccountKeyResponse)(nil)).Elem()
}

func (i StorageAccountKeyResponseArray) ToStorageAccountKeyResponseArrayOutput() StorageAccountKeyResponseArrayOutput {
	return i.ToStorageAccountKeyResponseArrayOutputWithContext(context.Background())
}

func (i StorageAccountKeyResponseArray) ToStorageAccountKeyResponseArrayOutputWithContext(ctx context.Context) StorageAccountKeyResponseArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(StorageAccountKeyResponseArrayOutput)
}

// An access key for the storage account.
type StorageAccountKeyResponseOutput struct{ *pulumi.OutputState }

func (StorageAccountKeyResponseOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*StorageAccountKeyResponse)(nil)).Elem()
}

func (o StorageAccountKeyResponseOutput) ToStorageAccountKeyResponseOutput() StorageAccountKeyResponseOutput {
	return o
}

func (o StorageAccountKeyResponseOutput) ToStorageAccountKeyResponseOutputWithContext(ctx context.Context) StorageAccountKeyResponseOutput {
	return o
}

// Creation time of the key, in round trip date format.
func (o StorageAccountKeyResponseOutput) CreationTime() pulumi.StringOutput {
	return o.ApplyT(func(v StorageAccountKeyResponse) string { return v.CreationTime }).(pulumi.StringOutput)
}

// Name of the key.
func (o StorageAccountKeyResponseOutput) KeyName() pulumi.StringOutput {
	return o.ApplyT(func(v StorageAccountKeyResponse) string { return v.KeyName }).(pulumi.StringOutput)
}

// Permissions for the key -- read-only or full permissions.
func (o StorageAccountKeyResponseOutput) Permissions() pulumi.StringOutput {
	return o.ApplyT(func(v StorageAccountKeyResponse) string { return v.Permissions }).(pulumi.StringOutput)
}

// Base 64-encoded value of the key.
func (o StorageAccountKeyResponseOutput) Value() pulumi.StringOutput {
	return o.ApplyT(func(v StorageAccountKeyResponse) string { return v.Value }).(pulumi.StringOutput)
}

type StorageAccountKeyResponseArrayOutput struct{ *pulumi.OutputState }

func (StorageAccountKeyResponseArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]StorageAccountKeyResponse)(nil)).Elem()
}

func (o StorageAccountKeyResponseArrayOutput) ToStorageAccountKeyResponseArrayOutput() StorageAccountKeyResponseArrayOutput {
	return o
}

func (o StorageAccountKeyResponseArrayOutput) ToStorageAccountKeyResponseArrayOutputWithContext(ctx context.Context) StorageAccountKeyResponseArrayOutput {
	return o
}

func (o StorageAccountKeyResponseArrayOutput) Index(i pulumi.IntInput) StorageAccountKeyResponseOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) StorageAccountKeyResponse {
		return vs[0].([]StorageAccountKeyResponse)[vs[1].(int)]
	}).(StorageAccountKeyResponseOutput)
}

type GetAmiIdsFilter struct {
	Name   string   `pulumi:"name"`
	Values []string `pulumi:"values"`
}

// GetAmiIdsFilterInput is an input type that accepts GetAmiIdsFilterArgs and GetAmiIdsFilterOutput values.
// You can construct a concrete instance of `GetAmiIdsFilterInput` via:
//
//          GetAmiIdsFilterArgs{...}
type GetAmiIdsFilterInput interface {
	pulumi.Input

	ToGetAmiIdsFilterOutput() GetAmiIdsFilterOutput
	ToGetAmiIdsFilterOutputWithContext(context.Context) GetAmiIdsFilterOutput
}

type GetAmiIdsFilterArgs struct {
	Name   pulumi.StringInput      `pulumi:"name"`
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (GetAmiIdsFilterArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*GetAmiIdsFilter)(nil)).Elem()
}

func (i GetAmiIdsFilterArgs) ToGetAmiIdsFilterOutput() GetAmiIdsFilterOutput {
	return i.ToGetAmiIdsFilterOutputWithContext(context.Background())
}

func (i GetAmiIdsFilterArgs) ToGetAmiIdsFilterOutputWithContext(ctx context.Context) GetAmiIdsFilterOutput {
	return pulumi.ToOutputWithContext(ctx, i).(GetAmiIdsFilterOutput)
}

// GetAmiIdsFilterArrayInput is an input type that accepts GetAmiIdsFilterArray and GetAmiIdsFilterArrayOutput values.
// You can construct a concrete instance of `GetAmiIdsFilterArrayInput` via:
//
//          GetAmiIdsFilterArray{ GetAmiIdsFilterArgs{...} }
type GetAmiIdsFilterArrayInput interface {
	pulumi.Input

	ToGetAmiIdsFilterArrayOutput() GetAmiIdsFilterArrayOutput
	ToGetAmiIdsFilterArrayOutputWithContext(context.Context) GetAmiIdsFilterArrayOutput
}

type GetAmiIdsFilterArray []GetAmiIdsFilterInput

func (GetAmiIdsFilterArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]GetAmiIdsFilter)(nil)).Elem()
}

func (i GetAmiIdsFilterArray) ToGetAmiIdsFilterArrayOutput() GetAmiIdsFilterArrayOutput {
	return i.ToGetAmiIdsFilterArrayOutputWithContext(context.Background())
}

func (i GetAmiIdsFilterArray) ToGetAmiIdsFilterArrayOutputWithContext(ctx context.Context) GetAmiIdsFilterArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(GetAmiIdsFilterArrayOutput)
}

type GetAmiIdsFilterOutput struct{ *pulumi.OutputState }

func (GetAmiIdsFilterOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*GetAmiIdsFilter)(nil)).Elem()
}

func (o GetAmiIdsFilterOutput) ToGetAmiIdsFilterOutput() GetAmiIdsFilterOutput {
	return o
}

func (o GetAmiIdsFilterOutput) ToGetAmiIdsFilterOutputWithContext(ctx context.Context) GetAmiIdsFilterOutput {
	return o
}

func (o GetAmiIdsFilterOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v GetAmiIdsFilter) string { return v.Name }).(pulumi.StringOutput)
}

func (o GetAmiIdsFilterOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v GetAmiIdsFilter) []string { return v.Values }).(pulumi.StringArrayOutput)
}

type GetAmiIdsFilterArrayOutput struct{ *pulumi.OutputState }

func (GetAmiIdsFilterArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]GetAmiIdsFilter)(nil)).Elem()
}

func (o GetAmiIdsFilterArrayOutput) ToGetAmiIdsFilterArrayOutput() GetAmiIdsFilterArrayOutput {
	return o
}

func (o GetAmiIdsFilterArrayOutput) ToGetAmiIdsFilterArrayOutputWithContext(ctx context.Context) GetAmiIdsFilterArrayOutput {
	return o
}

func (o GetAmiIdsFilterArrayOutput) Index(i pulumi.IntInput) GetAmiIdsFilterOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetAmiIdsFilter {
		return vs[0].([]GetAmiIdsFilter)[vs[1].(int)]
	}).(GetAmiIdsFilterOutput)
}

func init() {
	pulumi.RegisterInputType(reflect.TypeOf((*StorageAccountKeyResponseInput)(nil)).Elem(), StorageAccountKeyResponseArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*StorageAccountKeyResponseArrayInput)(nil)).Elem(), StorageAccountKeyResponseArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*GetAmiIdsFilterInput)(nil)).Elem(), GetAmiIdsFilterArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*GetAmiIdsFilterArrayInput)(nil)).Elem(), GetAmiIdsFilterArray{})
	pulumi.RegisterOutputType(StorageAccountKeyResponseOutput{})
	pulumi.RegisterOutputType(StorageAccountKeyResponseArrayOutput{})
	pulumi.RegisterOutputType(GetAmiIdsFilterOutput{})
	pulumi.RegisterOutputType(GetAmiIdsFilterArrayOutput{})
}
