import * as oam from "@distilled.cloud/aws/oam";
import * as Retry from "@distilled.cloud/aws/Retry";
import * as Effect from "effect/Effect";
/** One non-nested, bounded retry owner for OAM control-plane mutations. */
export declare const retryOamMutation: (effect: Effect.Effect, options?: {
conflict?: boolean;
}) => Effect.Effect>;
declare const SinkLinksStillAttached_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
readonly _tag: "SinkLinksStillAttached";
} & Readonly;
declare class SinkLinksStillAttached extends SinkLinksStillAttached_base<{
readonly sinkArn: string;
readonly count: number;
}> {
}
declare const OamResourceStillExists_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
readonly _tag: "OamResourceStillExists";
} & Readonly;
declare class OamResourceStillExists extends OamResourceStillExists_base<{
readonly arn: string;
}> {
}
/**
* Delete a sink only after attached links have drained, then observe absence.
*/
export declare const deleteSinkAndWait: (sinkArn: string) => Effect.Effect;
/** Idempotently delete a link and observe absence before its sink can delete. */
export declare const deleteLinkAndWait: (linkArn: string) => Effect.Effect;
/**
* Read the observed tags on an OAM sink or link, tolerating a
* not-yet-visible resource (returns `{}`).
*/
export declare const readOamTags: (resourceArn: string) => Effect.Effect, import("@distilled.cloud/aws/Errors").AccessDeniedException | import("@distilled.cloud/aws/Errors").EndpointError | import("@distilled.cloud/aws/Errors").ExpiredTokenException | import("effect/unstable/http/HttpClientError").HttpClientError | import("@distilled.cloud/aws/Errors").IncompleteSignature | import("@distilled.cloud/aws/Errors").InternalFailure | import("@distilled.cloud/aws/Errors").MalformedHttpRequestException | import("@distilled.cloud/aws/Errors").NoMatchingRuleError | import("@distilled.cloud/aws/Errors").NotAuthorized | import("@distilled.cloud/aws/Errors").OperationAborted | import("@distilled.cloud/aws/Errors").OptInRequired | import("@distilled.cloud/aws/Errors").RequestAbortedException | import("@distilled.cloud/aws/Errors").RequestEntityTooLargeException | import("@distilled.cloud/aws/Errors").RequestExpired | import("@distilled.cloud/aws/Errors").RequestTimeoutException | import("@distilled.cloud/aws/Errors").ServiceUnavailable | import("@distilled.cloud/aws/Errors").ThrottlingException | oam.TooManyRequestsException | import("@distilled.cloud/aws/Errors").UnknownAwsError | import("@distilled.cloud/aws/Errors").UnknownOperationException | import("@distilled.cloud/aws/Errors").UnrecognizedClientException | import("@distilled.cloud/aws/Errors").ValidationError, import("@distilled.cloud/aws/Credentials").Credentials | import("effect/unstable/http/HttpClient").HttpClient>;
/**
* Converge the tags on an OAM sink or link to the desired user tags merged
* with the internal Alchemy ownership tags, diffing against OBSERVED cloud
* tags so adoption converges.
*/
export declare const syncOamTags: (resourceArn: string, id: string, userTags: Record | undefined) => Effect.Effect;
export {};
//# sourceMappingURL=internal.d.ts.map