import * as Effect from "effect/Effect"; import * as Provider from "../../Provider.ts"; import { Resource } from "../../Resource.ts"; import { AWSEnvironment } from "../Environment.ts"; import type { Providers } from "../Providers.ts"; import { Region } from "../Region.ts"; /** Pin an FMS admin-account operation to the us-east-1 endpoint. */ export declare const pinFms: (effect: Effect.Effect) => Effect.Effect>; export interface AdminAccountProps { /** * The AWS account ID to designate as the AWS Firewall Manager administrator * account for the organization. Must be an account in the same AWS * Organization as the caller (which must be the Organizations management * account). If omitted, the caller's account is used. */ adminAccount?: string; } /** @resource */ export interface AdminAccount extends Resource<"AWS.FMS.AdminAccount", AdminAccountProps, { /** The account designated as the FMS administrator. */ adminAccount: string; /** Status of the FMS administrator IAM role (`READY` / `CREATING` / ...). */ roleStatus: string | undefined; }, never, Providers> { } /** * The AWS Firewall Manager administrator account — an organization-level * singleton that designates which account manages FMS security policies. * * :::caution * FMS requires the caller to be the AWS Organizations **management account**, * and the organization must have AWS Config enabled. On accounts that are not * an Organizations management account this resource fails at association time * with a typed `InvalidOperationException`. * * FMS admin-account APIs are served only from the us-east-1 endpoint; this * resource pins every control-plane call there regardless of the ambient * stack region. * ::: * * This is a capture-and-restore singleton: FMS exposes no tags, so ownership is * tracked by Alchemy state — adopting a pre-existing admin account that Alchemy * did not create requires `--adopt`, and destroy disassociates the admin. * * ### Designating the FMS admin * **Example:** Designate the caller as the FMS admin * ```typescript * const admin = yield* FMS.AdminAccount("FmsAdmin", {}); * ``` * * **Example:** Designate a specific member account * ```typescript * const admin = yield* FMS.AdminAccount("FmsAdmin", { * adminAccount: "123456789012", * }); * ``` */ declare const AdminAccountResource: import("../../Resource.ts").ResourceClass; export { AdminAccountResource as AdminAccount }; export declare const AdminAccountProvider: () => import("effect/Layer").Layer, never, AWSEnvironment | import("@distilled.cloud/aws/Credentials").Credentials | import("effect/unstable/http/HttpClient").HttpClient>; //# sourceMappingURL=AdminAccount.d.ts.map