import * as HttpClient from "effect/unstable/http/HttpClient";
import * as redacted from "effect/Redacted";
import * as S from "effect/Schema";
import * as stream from "effect/Stream";
import * as API from "../client/api.js";
import * as T from "../traits.js";
import * as C from "../category.js";
import { SensitiveString } from "../sensitive.js";
const svc = T.AwsApiService({
    sdkId: "TaxSettings",
    serviceShapeName: "TaxSettings",
});
const auth = T.AwsAuthSigv4({ name: "tax" });
const ver = T.ServiceVersion("2018-05-10");
const proto = T.AwsProtocolsRestJson1();
const rules = T.EndpointResolver((p, _) => {
    const { UseDualStack = false, UseFIPS = false, Endpoint, Region } = p;
    const e = (u, p = {}, h = {}) => ({
        type: "endpoint",
        endpoint: { url: u, properties: p, headers: h },
    });
    const err = (m) => ({
        type: "error",
        message: m,
    });
    const _p0 = (_0) => ({
        authSchemes: [
            {
                name: "sigv4",
                signingRegion: `${_.getAttr(_0, "implicitGlobalRegion")}`,
            },
        ],
    });
    if (Endpoint != null) {
        if (UseFIPS === true) {
            return err("Invalid Configuration: FIPS and custom endpoint are not supported");
        }
        if (UseDualStack === true) {
            return err("Invalid Configuration: Dualstack and custom endpoint are not supported");
        }
        return e(Endpoint);
    }
    if (Region != null) {
        {
            const PartitionResult = _.partition(Region);
            if (PartitionResult != null && PartitionResult !== false) {
                if (UseFIPS === true && UseDualStack === true) {
                    if (true === _.getAttr(PartitionResult, "supportsFIPS") &&
                        true === _.getAttr(PartitionResult, "supportsDualStack")) {
                        return e(`https://tax-fips.${_.getAttr(PartitionResult, "implicitGlobalRegion")}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`, _p0(PartitionResult), {});
                    }
                    return err("FIPS and DualStack are enabled, but this partition does not support one or both");
                }
                if (UseFIPS === true && UseDualStack === false) {
                    if (_.getAttr(PartitionResult, "supportsFIPS") === true) {
                        return e(`https://tax-fips.${_.getAttr(PartitionResult, "implicitGlobalRegion")}.${_.getAttr(PartitionResult, "dnsSuffix")}`, _p0(PartitionResult), {});
                    }
                    return err("FIPS is enabled but this partition does not support FIPS");
                }
                if (UseFIPS === false && UseDualStack === true) {
                    if (true === _.getAttr(PartitionResult, "supportsDualStack")) {
                        return e(`https://tax.${_.getAttr(PartitionResult, "implicitGlobalRegion")}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`, _p0(PartitionResult), {});
                    }
                    return err("DualStack is enabled but this partition does not support DualStack");
                }
                return e(`https://tax.${_.getAttr(PartitionResult, "implicitGlobalRegion")}.${_.getAttr(PartitionResult, "dnsSuffix")}`, _p0(PartitionResult), {});
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const AccountIds = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const BatchDeleteTaxRegistrationRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ accountIds: AccountIds }).pipe(T.all(T.Http({ method: "POST", uri: "/BatchDeleteTaxRegistration" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "BatchDeleteTaxRegistrationRequest",
});
export const BatchDeleteTaxRegistrationError_ = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    accountId: S.String,
    message: SensitiveString,
    code: S.optional(S.String),
})).annotate({
    identifier: "BatchDeleteTaxRegistrationError",
});
export const BatchDeleteTaxRegistrationErrors = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(BatchDeleteTaxRegistrationError_);
export const BatchDeleteTaxRegistrationResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ errors: BatchDeleteTaxRegistrationErrors })).annotate({
    identifier: "BatchDeleteTaxRegistrationResponse",
});
export const ValidationExceptionErrorCode = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const ValidationExceptionField = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ name: S.String })).annotate({
    identifier: "ValidationExceptionField",
});
export const ValidationExceptionFieldList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ValidationExceptionField);
export const BatchGetTaxExemptionsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ accountIds: AccountIds }).pipe(T.all(T.Http({ method: "POST", uri: "/BatchGetTaxExemptions" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "BatchGetTaxExemptionsRequest",
});
export const Authority = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ country: S.String, state: S.optional(S.String) })).annotate({ identifier: "Authority" });
export const Authorities = /*@__PURE__*/ /*#__PURE__*/ S.Array(Authority);
export const TaxExemptionType = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    displayName: S.optional(S.String),
    description: S.optional(S.String),
    applicableJurisdictions: S.optional(Authorities),
})).annotate({
    identifier: "TaxExemptionType",
});
export const EntityExemptionAccountStatus = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const TaxExemption = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    authority: Authority,
    taxExemptionType: TaxExemptionType,
    effectiveDate: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    expirationDate: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    systemEffectiveDate: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    status: S.optional(EntityExemptionAccountStatus),
})).annotate({ identifier: "TaxExemption" });
export const TaxExemptions = /*@__PURE__*/ /*#__PURE__*/ S.Array(TaxExemption);
export const TaxExemptionDetails = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    taxExemptions: S.optional(TaxExemptions),
    heritageObtainedDetails: S.optional(S.Boolean),
    heritageObtainedParentEntity: S.optional(S.String),
    heritageObtainedReason: S.optional(S.String),
})).annotate({
    identifier: "TaxExemptionDetails",
});
export const TaxExemptionDetailsMap = /*@__PURE__*/ /*#__PURE__*/ S.Record(S.String, TaxExemptionDetails.pipe(S.optional));
export const BatchGetTaxExemptionsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    taxExemptionDetailsMap: S.optional(TaxExemptionDetailsMap),
    failedAccounts: S.optional(AccountIds),
})).annotate({
    identifier: "BatchGetTaxExemptionsResponse",
});
export const TaxRegistrationType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Address = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    addressLine1: S.String,
    addressLine2: S.optional(S.String),
    addressLine3: S.optional(S.String),
    districtOrCounty: S.optional(S.String),
    city: S.String,
    stateOrRegion: S.optional(S.String),
    postalCode: S.String,
    countryCode: S.String,
})).annotate({ identifier: "Address" });
export const Sector = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const MalaysiaServiceTaxCode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const MalaysiaServiceTaxCodesList = /*@__PURE__*/ /*#__PURE__*/ S.Array(MalaysiaServiceTaxCode);
export const MalaysiaAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    serviceTaxCodes: S.optional(MalaysiaServiceTaxCodesList),
    taxInformationNumber: S.optional(S.String),
    businessRegistrationNumber: S.optional(S.String),
})).annotate({
    identifier: "MalaysiaAdditionalInfo",
});
export const IsraelDealerType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const IsraelCustomerType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const IsraelAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ dealerType: IsraelDealerType, customerType: IsraelCustomerType })).annotate({
    identifier: "IsraelAdditionalInfo",
});
export const EstoniaAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ registryCommercialCode: S.String })).annotate({
    identifier: "EstoniaAdditionalInfo",
});
export const CanadaAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    provincialSalesTaxId: S.optional(S.String),
    canadaQuebecSalesTaxNumber: S.optional(S.String),
    canadaRetailSalesTaxNumber: S.optional(S.String),
    isResellerAccount: S.optional(S.Boolean),
})).annotate({
    identifier: "CanadaAdditionalInfo",
});
export const RegistrationType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SpainAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ registrationType: RegistrationType })).annotate({
    identifier: "SpainAdditionalInfo",
});
export const PersonType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const KenyaAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ personType: PersonType })).annotate({
    identifier: "KenyaAdditionalInfo",
});
export const SouthKoreaAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    businessRepresentativeName: S.String,
    lineOfBusiness: S.String,
    itemOfBusiness: S.String,
})).annotate({
    identifier: "SouthKoreaAdditionalInfo",
});
export const Industries = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TurkeyAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    taxOffice: S.optional(S.String),
    kepEmailId: S.optional(S.String),
    secondaryTaxId: S.optional(S.String),
    industries: S.optional(Industries),
})).annotate({
    identifier: "TurkeyAdditionalInfo",
});
export const GeorgiaAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ personType: PersonType })).annotate({
    identifier: "GeorgiaAdditionalInfo",
});
export const ItalyAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    sdiAccountId: S.optional(S.String),
    cigNumber: S.optional(S.String),
    cupNumber: S.optional(S.String),
    taxCode: S.optional(S.String),
})).annotate({
    identifier: "ItalyAdditionalInfo",
});
export const TaxRegistrationNumberType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RomaniaAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ taxRegistrationNumberType: TaxRegistrationNumberType })).annotate({
    identifier: "RomaniaAdditionalInfo",
});
export const UkraineTrnType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const UkraineAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ukraineTrnType: UkraineTrnType })).annotate({
    identifier: "UkraineAdditionalInfo",
});
export const PolandAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    individualRegistrationNumber: S.optional(S.String),
    isGroupVatEnabled: S.optional(S.Boolean),
})).annotate({
    identifier: "PolandAdditionalInfo",
});
export const SaudiArabiaTaxRegistrationNumberType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const SaudiArabiaAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    taxRegistrationNumberType: S.optional(SaudiArabiaTaxRegistrationNumberType),
})).annotate({
    identifier: "SaudiArabiaAdditionalInfo",
});
export const IndonesiaTaxRegistrationNumberType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const IndonesiaAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    taxRegistrationNumberType: S.optional(IndonesiaTaxRegistrationNumberType),
    ppnExceptionDesignationCode: S.optional(S.String),
    decisionNumber: S.optional(S.String),
})).annotate({
    identifier: "IndonesiaAdditionalInfo",
});
export const VietnamAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    enterpriseIdentificationNumber: S.optional(S.String),
    electronicTransactionCodeNumber: S.optional(S.String),
    paymentVoucherNumber: S.optional(S.String),
    paymentVoucherNumberDate: S.optional(S.String),
})).annotate({
    identifier: "VietnamAdditionalInfo",
});
export const EgyptAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    uniqueIdentificationNumber: S.optional(S.String),
    uniqueIdentificationNumberExpirationDate: S.optional(S.String),
})).annotate({
    identifier: "EgyptAdditionalInfo",
});
export const GreeceAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ contractingAuthorityCode: S.optional(S.String) })).annotate({
    identifier: "GreeceAdditionalInfo",
});
export const UzbekistanTaxRegistrationNumberType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const UzbekistanAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    taxRegistrationNumberType: S.optional(UzbekistanTaxRegistrationNumberType),
    vatRegistrationNumber: S.optional(S.String),
})).annotate({
    identifier: "UzbekistanAdditionalInfo",
});
export const AdditionalInfoRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    malaysiaAdditionalInfo: S.optional(MalaysiaAdditionalInfo),
    israelAdditionalInfo: S.optional(IsraelAdditionalInfo),
    estoniaAdditionalInfo: S.optional(EstoniaAdditionalInfo),
    canadaAdditionalInfo: S.optional(CanadaAdditionalInfo),
    spainAdditionalInfo: S.optional(SpainAdditionalInfo),
    kenyaAdditionalInfo: S.optional(KenyaAdditionalInfo),
    southKoreaAdditionalInfo: S.optional(SouthKoreaAdditionalInfo),
    turkeyAdditionalInfo: S.optional(TurkeyAdditionalInfo),
    georgiaAdditionalInfo: S.optional(GeorgiaAdditionalInfo),
    italyAdditionalInfo: S.optional(ItalyAdditionalInfo),
    romaniaAdditionalInfo: S.optional(RomaniaAdditionalInfo),
    ukraineAdditionalInfo: S.optional(UkraineAdditionalInfo),
    polandAdditionalInfo: S.optional(PolandAdditionalInfo),
    saudiArabiaAdditionalInfo: S.optional(SaudiArabiaAdditionalInfo),
    indonesiaAdditionalInfo: S.optional(IndonesiaAdditionalInfo),
    vietnamAdditionalInfo: S.optional(VietnamAdditionalInfo),
    egyptAdditionalInfo: S.optional(EgyptAdditionalInfo),
    greeceAdditionalInfo: S.optional(GreeceAdditionalInfo),
    uzbekistanAdditionalInfo: S.optional(UzbekistanAdditionalInfo),
})).annotate({
    identifier: "AdditionalInfoRequest",
});
export const SourceS3Location = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ bucket: S.String, key: S.String })).annotate({
    identifier: "SourceS3Location",
});
export const TaxRegistrationDocFile = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ fileName: S.String, fileContent: T.Blob })).annotate({
    identifier: "TaxRegistrationDocFile",
});
export const TaxRegistrationDocument = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    s3Location: S.optional(SourceS3Location),
    file: S.optional(TaxRegistrationDocFile),
})).annotate({
    identifier: "TaxRegistrationDocument",
});
export const TaxRegistrationDocuments = /*@__PURE__*/ /*#__PURE__*/ S.Array(TaxRegistrationDocument);
export const VerificationDetails = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    dateOfBirth: S.optional(S.String),
    taxRegistrationDocuments: S.optional(TaxRegistrationDocuments),
})).annotate({
    identifier: "VerificationDetails",
});
export const TaxRegistrationEntry = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    registrationId: S.String,
    registrationType: TaxRegistrationType,
    legalName: S.optional(S.String),
    legalAddress: S.optional(Address),
    sector: S.optional(Sector),
    additionalTaxInformation: S.optional(AdditionalInfoRequest),
    verificationDetails: S.optional(VerificationDetails),
    certifiedEmailId: S.optional(S.String),
})).annotate({
    identifier: "TaxRegistrationEntry",
});
export const BatchPutTaxRegistrationRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    accountIds: AccountIds,
    taxRegistrationEntry: TaxRegistrationEntry,
}).pipe(T.all(T.Http({ method: "POST", uri: "/BatchPutTaxRegistration" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "BatchPutTaxRegistrationRequest",
});
export const TaxRegistrationStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const BatchPutTaxRegistrationError_ = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    accountId: S.String,
    message: SensitiveString,
    code: S.optional(S.String),
})).annotate({
    identifier: "BatchPutTaxRegistrationError",
});
export const BatchPutTaxRegistrationErrors = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(BatchPutTaxRegistrationError_);
export const BatchPutTaxRegistrationResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    status: S.optional(TaxRegistrationStatus),
    errors: BatchPutTaxRegistrationErrors,
})).annotate({
    identifier: "BatchPutTaxRegistrationResponse",
});
export const DeleteSupplementalTaxRegistrationRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ authorityId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/DeleteSupplementalTaxRegistration" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteSupplementalTaxRegistrationRequest",
});
export const DeleteSupplementalTaxRegistrationResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteSupplementalTaxRegistrationResponse",
});
export const DeleteTaxRegistrationRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ accountId: S.optional(S.String) }).pipe(T.all(T.Http({ method: "POST", uri: "/DeleteTaxRegistration" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteTaxRegistrationRequest",
});
export const DeleteTaxRegistrationResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteTaxRegistrationResponse",
});
export const GetTaxExemptionTypesRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(T.all(T.Http({ method: "POST", uri: "/GetTaxExemptionTypes" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetTaxExemptionTypesRequest",
});
export const TaxExemptionTypes = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(TaxExemptionType);
export const GetTaxExemptionTypesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ taxExemptionTypes: S.optional(TaxExemptionTypes) })).annotate({
    identifier: "GetTaxExemptionTypesResponse",
});
export const GetTaxInheritanceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(T.all(T.Http({ method: "POST", uri: "/GetTaxInheritance" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetTaxInheritanceRequest",
});
export const HeritageStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const GetTaxInheritanceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ heritageStatus: S.optional(HeritageStatus) })).annotate({
    identifier: "GetTaxInheritanceResponse",
});
export const GetTaxRegistrationRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ accountId: S.optional(S.String) }).pipe(T.all(T.Http({ method: "POST", uri: "/GetTaxRegistration" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetTaxRegistrationRequest",
});
export const TaxDocumentMetadata = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ taxDocumentAccessToken: S.String, taxDocumentName: S.String })).annotate({
    identifier: "TaxDocumentMetadata",
});
export const TaxDocumentMetadatas = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(TaxDocumentMetadata);
export const BrazilAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ccmCode: S.optional(S.String),
    legalNatureCode: S.optional(S.String),
})).annotate({
    identifier: "BrazilAdditionalInfo",
});
export const IndiaAdditionalInfo = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ pan: S.optional(S.String) })).annotate({
    identifier: "IndiaAdditionalInfo",
});
export const AdditionalInfoResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    malaysiaAdditionalInfo: S.optional(MalaysiaAdditionalInfo),
    israelAdditionalInfo: S.optional(IsraelAdditionalInfo),
    estoniaAdditionalInfo: S.optional(EstoniaAdditionalInfo),
    canadaAdditionalInfo: S.optional(CanadaAdditionalInfo),
    brazilAdditionalInfo: S.optional(BrazilAdditionalInfo),
    spainAdditionalInfo: S.optional(SpainAdditionalInfo),
    kenyaAdditionalInfo: S.optional(KenyaAdditionalInfo),
    southKoreaAdditionalInfo: S.optional(SouthKoreaAdditionalInfo),
    turkeyAdditionalInfo: S.optional(TurkeyAdditionalInfo),
    georgiaAdditionalInfo: S.optional(GeorgiaAdditionalInfo),
    italyAdditionalInfo: S.optional(ItalyAdditionalInfo),
    romaniaAdditionalInfo: S.optional(RomaniaAdditionalInfo),
    ukraineAdditionalInfo: S.optional(UkraineAdditionalInfo),
    polandAdditionalInfo: S.optional(PolandAdditionalInfo),
    saudiArabiaAdditionalInfo: S.optional(SaudiArabiaAdditionalInfo),
    indiaAdditionalInfo: S.optional(IndiaAdditionalInfo),
    indonesiaAdditionalInfo: S.optional(IndonesiaAdditionalInfo),
    vietnamAdditionalInfo: S.optional(VietnamAdditionalInfo),
    egyptAdditionalInfo: S.optional(EgyptAdditionalInfo),
    greeceAdditionalInfo: S.optional(GreeceAdditionalInfo),
    uzbekistanAdditionalInfo: S.optional(UzbekistanAdditionalInfo),
})).annotate({
    identifier: "AdditionalInfoResponse",
});
export const TaxRegistration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    registrationId: S.String,
    registrationType: TaxRegistrationType,
    legalName: S.String,
    status: TaxRegistrationStatus,
    sector: S.optional(Sector),
    taxDocumentMetadatas: S.optional(TaxDocumentMetadatas),
    certifiedEmailId: S.optional(S.String),
    additionalTaxInformation: S.optional(AdditionalInfoResponse),
    legalAddress: Address,
})).annotate({
    identifier: "TaxRegistration",
});
export const GetTaxRegistrationResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ taxRegistration: S.optional(TaxRegistration) })).annotate({
    identifier: "GetTaxRegistrationResponse",
});
export const DestinationS3Location = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ bucket: S.String, prefix: S.optional(S.String) })).annotate({
    identifier: "DestinationS3Location",
});
export const GetTaxRegistrationDocumentRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    destinationS3Location: S.optional(DestinationS3Location),
    taxDocumentMetadata: TaxDocumentMetadata,
}).pipe(T.all(T.Http({ method: "POST", uri: "/GetTaxRegistrationDocument" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetTaxRegistrationDocumentRequest",
});
export const GetTaxRegistrationDocumentResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    destinationFilePath: S.optional(S.String),
    presignedS3Url: S.optional(S.String),
})).annotate({
    identifier: "GetTaxRegistrationDocumentResponse",
});
export const ListSupplementalTaxRegistrationsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    maxResults: S.optional(S.Number),
    nextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/ListSupplementalTaxRegistrations" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListSupplementalTaxRegistrationsRequest",
});
export const SupplementalTaxRegistrationType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const SupplementalTaxRegistration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    registrationId: S.String,
    registrationType: SupplementalTaxRegistrationType,
    legalName: S.String,
    address: Address,
    authorityId: S.String,
    status: TaxRegistrationStatus,
})).annotate({
    identifier: "SupplementalTaxRegistration",
});
export const SupplementalTaxRegistrationList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SupplementalTaxRegistration);
export const ListSupplementalTaxRegistrationsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    taxRegistrations: SupplementalTaxRegistrationList,
    nextToken: S.optional(S.String),
})).annotate({
    identifier: "ListSupplementalTaxRegistrationsResponse",
});
export const ListTaxExemptionsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    maxResults: S.optional(S.Number),
    nextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/ListTaxExemptions" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTaxExemptionsRequest",
});
export const ListTaxExemptionsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    nextToken: S.optional(S.String),
    taxExemptionDetailsMap: S.optional(TaxExemptionDetailsMap),
})).annotate({
    identifier: "ListTaxExemptionsResponse",
});
export const ListTaxRegistrationsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    maxResults: S.optional(S.Number),
    nextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/ListTaxRegistrations" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTaxRegistrationsRequest",
});
export const Jurisdiction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ stateOrRegion: S.optional(S.String), countryCode: S.String })).annotate({ identifier: "Jurisdiction" });
export const TaxRegistrationWithJurisdiction = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    registrationId: S.String,
    registrationType: TaxRegistrationType,
    legalName: S.String,
    status: TaxRegistrationStatus,
    sector: S.optional(Sector),
    taxDocumentMetadatas: S.optional(TaxDocumentMetadatas),
    certifiedEmailId: S.optional(S.String),
    additionalTaxInformation: S.optional(AdditionalInfoResponse),
    jurisdiction: Jurisdiction,
})).annotate({
    identifier: "TaxRegistrationWithJurisdiction",
});
export const TaxInheritanceDetails = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    parentEntityId: S.optional(S.String),
    inheritanceObtainedReason: S.optional(S.String),
})).annotate({
    identifier: "TaxInheritanceDetails",
});
export const AddressRoleType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const AddressRoleMap = /*@__PURE__*/ /*#__PURE__*/ S.Record(AddressRoleType, Jurisdiction.pipe(S.optional));
export const AccountMetaData = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    accountName: S.optional(S.String),
    seller: S.optional(S.String),
    address: S.optional(Address),
    addressType: S.optional(AddressRoleType),
    addressRoleMap: S.optional(AddressRoleMap),
})).annotate({
    identifier: "AccountMetaData",
});
export const AccountDetails = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    accountId: S.optional(S.String),
    taxRegistration: S.optional(TaxRegistrationWithJurisdiction),
    taxInheritanceDetails: S.optional(TaxInheritanceDetails),
    accountMetaData: S.optional(AccountMetaData),
})).annotate({ identifier: "AccountDetails" });
export const AccountDetailsList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(AccountDetails);
export const ListTaxRegistrationsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    accountDetails: AccountDetailsList,
    nextToken: S.optional(S.String),
})).annotate({
    identifier: "ListTaxRegistrationsResponse",
});
export const SupplementalTaxRegistrationEntry = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    registrationId: S.String,
    registrationType: SupplementalTaxRegistrationType,
    legalName: S.String,
    address: Address,
})).annotate({
    identifier: "SupplementalTaxRegistrationEntry",
});
export const PutSupplementalTaxRegistrationRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ taxRegistrationEntry: SupplementalTaxRegistrationEntry }).pipe(T.all(T.Http({ method: "POST", uri: "/PutSupplementalTaxRegistration" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "PutSupplementalTaxRegistrationRequest",
});
export const PutSupplementalTaxRegistrationResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ authorityId: S.String, status: TaxRegistrationStatus })).annotate({
    identifier: "PutSupplementalTaxRegistrationResponse",
});
export const ExemptionCertificate = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ documentName: S.String, documentFile: T.Blob })).annotate({
    identifier: "ExemptionCertificate",
});
export const PutTaxExemptionRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    accountIds: AccountIds,
    authority: Authority,
    exemptionType: S.String,
    exemptionCertificate: ExemptionCertificate,
}).pipe(T.all(T.Http({ method: "POST", uri: "/PutTaxExemption" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "PutTaxExemptionRequest",
});
export const PutTaxExemptionResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ caseId: S.optional(S.String) })).annotate({
    identifier: "PutTaxExemptionResponse",
});
export const PutTaxInheritanceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ heritageStatus: S.optional(HeritageStatus) }).pipe(T.all(T.Http({ method: "POST", uri: "/PutTaxInheritance" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "PutTaxInheritanceRequest",
});
export const PutTaxInheritanceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "PutTaxInheritanceResponse",
});
export const PutTaxRegistrationRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    accountId: S.optional(S.String),
    taxRegistrationEntry: TaxRegistrationEntry,
}).pipe(T.all(T.Http({ method: "POST", uri: "/PutTaxRegistration" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "PutTaxRegistrationRequest",
});
export const PutTaxRegistrationResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ status: S.optional(TaxRegistrationStatus) })).annotate({
    identifier: "PutTaxRegistrationResponse",
});
//# Errors
export class ConflictException extends S.TaggedErrorClass()("ConflictException", { message: SensitiveString, errorCode: S.String }).pipe(C.withConflictError) {
}
export class InternalServerException extends S.TaggedErrorClass()("InternalServerException", { message: SensitiveString, errorCode: S.String }).pipe(C.withServerError) {
}
export class ValidationException extends S.TaggedErrorClass()("ValidationException", {
    message: SensitiveString,
    errorCode: ValidationExceptionErrorCode,
    fieldList: S.optional(ValidationExceptionFieldList),
}).pipe(C.withBadRequestError) {
}
export class ResourceNotFoundException extends S.TaggedErrorClass()("ResourceNotFoundException", { message: SensitiveString, errorCode: S.String }).pipe(C.withBadRequestError) {
}
export class AccessDeniedException extends S.TaggedErrorClass()("AccessDeniedException", { message: SensitiveString }).pipe(C.withAuthError) {
}
export class AttachmentUploadException extends S.TaggedErrorClass()("AttachmentUploadException", { message: SensitiveString }).pipe(C.withBadRequestError) {
}
export class CaseCreationLimitExceededException extends S.TaggedErrorClass()("CaseCreationLimitExceededException", { message: SensitiveString }).pipe(C.withBadRequestError) {
}
/**
 * Deletes tax registration for multiple accounts in batch. This can be used to delete tax
 * registrations for up to five accounts in one batch.
 *
 * This API operation can't be used to delete your tax registration in Brazil. Use the Payment preferences page in the Billing and Cost Management console instead.
 */
export const batchDeleteTaxRegistration = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: BatchDeleteTaxRegistrationRequest,
    output: BatchDeleteTaxRegistrationResponse,
    errors: [ConflictException, InternalServerException, ValidationException],
}));
/**
 * Get the active tax exemptions for a given list of accounts. The IAM action is `tax:GetExemptions`.
 */
export const batchGetTaxExemptions = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: BatchGetTaxExemptionsRequest,
    output: BatchGetTaxExemptionsResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
/**
 * Adds or updates tax registration for multiple accounts in batch. This can be used to add
 * or update tax registrations for up to five accounts in one batch. You can't set a TRN if there's a pending TRN. You'll need to delete the pending TRN first.
 *
 * To call this API operation for specific countries, see the following country-specific
 * requirements.
 *
 * **Bangladesh**
 *
 * - You must specify the tax registration certificate document in the
 * `taxRegistrationDocuments` field of the `VerificationDetails`
 * object.
 *
 * **Brazil**
 *
 * - You must complete the tax registration process in the Payment preferences page in the Billing and Cost Management console. After your TRN and billing address are verified, you can call this API operation.
 *
 * - For Amazon Web Services accounts created through Organizations, you can call this API operation when you don't have a billing address.
 *
 * **Georgia**
 *
 * - The valid `personType` values are `Physical Person` and `Business`.
 *
 * **Indonesia**
 *
 * - `PutTaxRegistration`: The use of this operation to submit tax information is subject to the Amazon Web Services service terms. By submitting, you’re providing consent for Amazon Web Services to validate NIK, NPWP, and NITKU data, provided by you with the Directorate General of Taxes of Indonesia in accordance with the Minister of Finance Regulation (PMK) Number 112/PMK.03/2022.
 *
 * - `BatchPutTaxRegistration`: The use of this operation to submit tax information is subject to the Amazon Web Services service terms. By submitting, you’re providing consent for Amazon Web Services to validate NIK, NPWP, and NITKU data, provided by you with the Directorate General of Taxes of Indonesia in accordance with the Minister of Finance Regulation (PMK) Number 112/PMK.03/2022, through our third-party partner PT Achilles Advanced Management (OnlinePajak).
 *
 * - You must specify the `taxRegistrationNumberType` in the `indonesiaAdditionalInfo` field of the `additionalTaxInformation` object.
 *
 * - If you specify `decisionNumber`, you must specify the `ppnExceptionDesignationCode` in the `indonesiaAdditionalInfo` field of the `additionalTaxInformation` object. If the `taxRegistrationNumberType` is set to NPWP or NITKU, valid values for `ppnExceptionDesignationCode` are either `01`, `02`, `03`, `07`, or `08`.
 *
 * For other `taxRegistrationNumberType` values, `ppnExceptionDesignationCode` must be either `01`, `07`, or `08`.
 *
 * - If `ppnExceptionDesignationCode` is `07`, you must specify the `decisionNumber` in the `indonesiaAdditionalInfo` field of the `additionalTaxInformation` object.
 *
 * **Kenya**
 *
 * - You must specify the `personType` in the `kenyaAdditionalInfo`
 * field of the `additionalTaxInformation` object.
 *
 * - If the `personType` is `Physical Person`, you must specify the
 * tax registration certificate document in the `taxRegistrationDocuments` field
 * of the `VerificationDetails` object.
 *
 * **Malaysia**
 *
 * - The sector valid values are `Business` and `Individual`.
 *
 * - `RegistrationType` valid values are `NRIC` for individual, and TIN and sales and service tax (SST) for Business.
 *
 * - For individual, you can specify the `taxInformationNumber` in `MalaysiaAdditionalInfo` with NRIC type, and a valid `MyKad` or NRIC number.
 *
 * - For business, you must specify a `businessRegistrationNumber` in `MalaysiaAdditionalInfo` with a TIN type and tax identification number.
 *
 * - For business resellers, you must specify a `businessRegistrationNumber` and `taxInformationNumber` in `MalaysiaAdditionalInfo` with a sales and service tax (SST) type and a valid SST number.
 *
 * - For business resellers with service codes, you must specify `businessRegistrationNumber`, `taxInformationNumber`, and distinct `serviceTaxCodes` in `MalaysiaAdditionalInfo` with a SST type and valid sales and service tax (SST) number. By using this API operation, Amazon Web Services registers your self-declaration that you’re an authorized business reseller registered with the Royal Malaysia Customs Department (RMCD), and have a valid SST number.
 *
 * - Amazon Web Services reserves the right to seek additional information and/or take other actions to
 * support your self-declaration as appropriate.
 *
 * - Amazon Web Services is currently registered under the following service tax codes. You must include
 * at least one of the service tax codes in the service tax code strings to declare yourself
 * as an authorized registered business reseller.
 *
 * Taxable service and service tax codes:
 *
 * Consultancy - 9907061674
 *
 * Training or coaching service - 9907071685
 *
 * IT service - 9907101676
 *
 * Digital services and electronic medium - 9907121690
 *
 * **Nepal**
 *
 * - The sector valid values are `Business` and `Individual`.
 *
 * **Saudi Arabia**
 *
 * - For `address`, you must specify `addressLine3`.
 *
 * **South Korea**
 *
 * - You must specify the `certifiedEmailId` and `legalName` in the
 * `TaxRegistrationEntry` object. Use Korean characters for
 * `legalName`.
 *
 * - You must specify the `businessRepresentativeName`,
 * `itemOfBusiness`, and `lineOfBusiness` in the
 * `southKoreaAdditionalInfo` field of the `additionalTaxInformation`
 * object. Use Korean characters for these fields.
 *
 * - You must specify the tax registration certificate document in the
 * `taxRegistrationDocuments` field of the `VerificationDetails`
 * object.
 *
 * - For the `address` object, use Korean characters for `addressLine1`, `addressLine2`
 * `city`, `postalCode`, and `stateOrRegion`.
 *
 * **Spain**
 *
 * - You must specify the `registrationType` in the
 * `spainAdditionalInfo` field of the `additionalTaxInformation`
 * object.
 *
 * - If the `registrationType` is `Local`, you must specify the tax
 * registration certificate document in the `taxRegistrationDocuments` field of
 * the `VerificationDetails` object.
 *
 * **Turkey**
 *
 * - You must specify the `sector` in the `taxRegistrationEntry` object.
 *
 * - If your `sector` is `Business`, `Individual`, or
 * `Government`:
 *
 * - Specify the `taxOffice`. If your
 * `sector` is `Individual`, don't enter this value.
 *
 * - (Optional) Specify the `kepEmailId`. If your
 * `sector` is `Individual`, don't enter this value.
 *
 * - **Note:** In the **Tax Settings** page of the Billing console, `Government` appears as **Public institutions**
 *
 * - If your `sector` is `Business` and you're subject to KDV tax,
 * you must specify your industry in the `industries` field.
 *
 * - For `address`, you must specify `districtOrCounty`.
 *
 * **Ukraine**
 *
 * - The sector valid values are `Business` and `Individual`.
 */
export const batchPutTaxRegistration = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: BatchPutTaxRegistrationRequest,
    output: BatchPutTaxRegistrationResponse,
    errors: [ConflictException, InternalServerException, ValidationException],
}));
/**
 * Deletes a supplemental tax registration for a single account.
 */
export const deleteSupplementalTaxRegistration = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteSupplementalTaxRegistrationRequest,
    output: DeleteSupplementalTaxRegistrationResponse,
    errors: [
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
/**
 * Deletes tax registration for a single account.
 *
 * This API operation can't be used to delete your tax registration in Brazil. Use the Payment preferences page in the Billing and Cost Management console instead.
 */
export const deleteTaxRegistration = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteTaxRegistrationRequest,
    output: DeleteTaxRegistrationResponse,
    errors: [
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
/**
 * Get supported tax exemption types. The IAM action is `tax:GetExemptions`.
 */
export const getTaxExemptionTypes = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetTaxExemptionTypesRequest,
    output: GetTaxExemptionTypesResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
/**
 * The get account tax inheritance status.
 */
export const getTaxInheritance = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetTaxInheritanceRequest,
    output: GetTaxInheritanceResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
/**
 * Retrieves tax registration for a single account.
 */
export const getTaxRegistration = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetTaxRegistrationRequest,
    output: GetTaxRegistrationResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
/**
 * Downloads your tax documents to the Amazon S3 bucket that you specify in your
 * request.
 */
export const getTaxRegistrationDocument = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetTaxRegistrationDocumentRequest,
    output: GetTaxRegistrationDocumentResponse,
    errors: [InternalServerException, ValidationException],
}));
/**
 * Retrieves supplemental tax registrations for a single account.
 */
export const listSupplementalTaxRegistrations = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListSupplementalTaxRegistrationsRequest,
    output: ListSupplementalTaxRegistrationsResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
    pagination: {
        inputToken: "nextToken",
        outputToken: "nextToken",
        items: "taxRegistrations",
        pageSize: "maxResults",
    },
}));
/**
 * Retrieves the tax exemption of accounts listed in a consolidated billing family. The IAM action is `tax:GetExemptions`.
 */
export const listTaxExemptions = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListTaxExemptionsRequest,
    output: ListTaxExemptionsResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
    pagination: {
        inputToken: "nextToken",
        outputToken: "nextToken",
        items: "taxExemptionDetailsMap",
        pageSize: "maxResults",
    },
}));
/**
 * Retrieves the tax registration of accounts listed in a consolidated billing family. This
 * can be used to retrieve up to 100 accounts' tax registrations in one call (default 50).
 */
export const listTaxRegistrations = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListTaxRegistrationsRequest,
    output: ListTaxRegistrationsResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
    pagination: {
        inputToken: "nextToken",
        outputToken: "nextToken",
        items: "accountDetails",
        pageSize: "maxResults",
    },
}));
/**
 * Stores supplemental tax registration for a single account.
 */
export const putSupplementalTaxRegistration = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: PutSupplementalTaxRegistrationRequest,
    output: PutSupplementalTaxRegistrationResponse,
    errors: [ConflictException, InternalServerException, ValidationException],
}));
/**
 * Adds the tax exemption for a single account or all accounts listed in a consolidated billing family. The IAM action is `tax:UpdateExemptions`.
 */
export const putTaxExemption = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: PutTaxExemptionRequest,
    output: PutTaxExemptionResponse,
    errors: [
        AccessDeniedException,
        AttachmentUploadException,
        CaseCreationLimitExceededException,
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
/**
 * The updated tax inheritance status.
 */
export const putTaxInheritance = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: PutTaxInheritanceRequest,
    output: PutTaxInheritanceResponse,
    errors: [
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
/**
 * Adds or updates tax registration for a single account. You can't set a TRN if there's a pending TRN. You'll need to delete the pending TRN first.
 *
 * To call this API operation for specific countries, see the following country-specific
 * requirements.
 *
 * **Bangladesh**
 *
 * - You must specify the tax registration certificate document in the
 * `taxRegistrationDocuments` field of the `VerificationDetails`
 * object.
 *
 * **Brazil**
 *
 * - You must complete the tax registration process in the Payment preferences page in the Billing and Cost Management console. After your TRN and billing address are verified, you can call this API operation.
 *
 * - For Amazon Web Services accounts created through Organizations, you can call this API operation when you don't have a billing address.
 *
 * **Georgia**
 *
 * - The valid `personType` values are `Physical Person` and `Business`.
 *
 * **Indonesia**
 *
 * - `PutTaxRegistration`: The use of this operation to submit tax information is subject to the Amazon Web Services service terms. By submitting, you’re providing consent for Amazon Web Services to validate NIK, NPWP, and NITKU data, provided by you with the Directorate General of Taxes of Indonesia in accordance with the Minister of Finance Regulation (PMK) Number 112/PMK.03/2022.
 *
 * - `BatchPutTaxRegistration`: The use of this operation to submit tax information is subject to the Amazon Web Services service terms. By submitting, you’re providing consent for Amazon Web Services to validate NIK, NPWP, and NITKU data, provided by you with the Directorate General of Taxes of Indonesia in accordance with the Minister of Finance Regulation (PMK) Number 112/PMK.03/2022, through our third-party partner PT Achilles Advanced Management (OnlinePajak).
 *
 * - You must specify the `taxRegistrationNumberType` in the `indonesiaAdditionalInfo` field of the `additionalTaxInformation` object.
 *
 * - If you specify `decisionNumber`, you must specify the `ppnExceptionDesignationCode` in the `indonesiaAdditionalInfo` field of the `additionalTaxInformation` object. If the `taxRegistrationNumberType` is set to NPWP or NITKU, valid values for `ppnExceptionDesignationCode` are either `01`, `02`, `03`, `07`, or `08`.
 *
 * For other `taxRegistrationNumberType` values, `ppnExceptionDesignationCode` must be either `01`, `07`, or `08`.
 *
 * - If `ppnExceptionDesignationCode` is `07`, you must specify the `decisionNumber` in the `indonesiaAdditionalInfo` field of the `additionalTaxInformation` object.
 *
 * **Kenya**
 *
 * - You must specify the `personType` in the `kenyaAdditionalInfo`
 * field of the `additionalTaxInformation` object.
 *
 * - If the `personType` is `Physical Person`, you must specify the
 * tax registration certificate document in the `taxRegistrationDocuments` field
 * of the `VerificationDetails` object.
 *
 * **Malaysia**
 *
 * - The sector valid values are `Business` and `Individual`.
 *
 * - `RegistrationType` valid values are `NRIC` for individual, and TIN and sales and service tax (SST) for Business.
 *
 * - For individual, you can specify the `taxInformationNumber` in `MalaysiaAdditionalInfo` with NRIC type, and a valid `MyKad` or NRIC number.
 *
 * - For business, you must specify a `businessRegistrationNumber` in `MalaysiaAdditionalInfo` with a TIN type and tax identification number.
 *
 * - For business resellers, you must specify a `businessRegistrationNumber` and `taxInformationNumber` in `MalaysiaAdditionalInfo` with a sales and service tax (SST) type and a valid SST number.
 *
 * - For business resellers with service codes, you must specify `businessRegistrationNumber`, `taxInformationNumber`, and distinct `serviceTaxCodes` in `MalaysiaAdditionalInfo` with a SST type and valid sales and service tax (SST) number. By using this API operation, Amazon Web Services registers your self-declaration that you’re an authorized business reseller registered with the Royal Malaysia Customs Department (RMCD), and have a valid SST number.
 *
 * - Amazon Web Services reserves the right to seek additional information and/or take other actions to
 * support your self-declaration as appropriate.
 *
 * - Amazon Web Services is currently registered under the following service tax codes. You must include
 * at least one of the service tax codes in the service tax code strings to declare yourself
 * as an authorized registered business reseller.
 *
 * Taxable service and service tax codes:
 *
 * Consultancy - 9907061674
 *
 * Training or coaching service - 9907071685
 *
 * IT service - 9907101676
 *
 * Digital services and electronic medium - 9907121690
 *
 * **Nepal**
 *
 * - The sector valid values are `Business` and `Individual`.
 *
 * **Saudi Arabia**
 *
 * - For `address`, you must specify `addressLine3`.
 *
 * **South Korea**
 *
 * - You must specify the `certifiedEmailId` and `legalName` in the
 * `TaxRegistrationEntry` object. Use Korean characters for
 * `legalName`.
 *
 * - You must specify the `businessRepresentativeName`,
 * `itemOfBusiness`, and `lineOfBusiness` in the
 * `southKoreaAdditionalInfo` field of the `additionalTaxInformation`
 * object. Use Korean characters for these fields.
 *
 * - You must specify the tax registration certificate document in the
 * `taxRegistrationDocuments` field of the `VerificationDetails`
 * object.
 *
 * - For the `address` object, use Korean characters for `addressLine1`, `addressLine2`
 * `city`, `postalCode`, and `stateOrRegion`.
 *
 * **Spain**
 *
 * - You must specify the `registrationType` in the
 * `spainAdditionalInfo` field of the `additionalTaxInformation`
 * object.
 *
 * - If the `registrationType` is `Local`, you must specify the tax
 * registration certificate document in the `taxRegistrationDocuments` field of
 * the `VerificationDetails` object.
 *
 * **Turkey**
 *
 * - You must specify the `sector` in the `taxRegistrationEntry` object.
 *
 * - If your `sector` is `Business`, `Individual`, or
 * `Government`:
 *
 * - Specify the `taxOffice`. If your
 * `sector` is `Individual`, don't enter this value.
 *
 * - (Optional) Specify the `kepEmailId`. If your
 * `sector` is `Individual`, don't enter this value.
 *
 * - **Note:** In the **Tax Settings** page of the Billing console, `Government` appears as **Public institutions**
 *
 * - If your `sector` is `Business` and you're subject to KDV tax,
 * you must specify your industry in the `industries` field.
 *
 * - For `address`, you must specify `districtOrCounty`.
 *
 * **Ukraine**
 *
 * - The sector valid values are `Business` and `Individual`.
 */
export const putTaxRegistration = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: PutTaxRegistrationRequest,
    output: PutTaxRegistrationResponse,
    errors: [ConflictException, InternalServerException, ValidationException],
}));
//# sourceMappingURL=taxsettings.js.map