import { components } from "../types/openapi.js";
import { SiteArgs } from "../types/types.js";
import { CamelCasedObjectKeys } from "../util/casedObjectKeys.js";
import { paths } from "../types/openapi.js";
import { VariableResult } from "../util/formatVariableResult.js";
import { Extension } from "../extension.js";
import { CountryCode } from "../mod.js";
/** Initializes, updates, or confirms a delivery with Ingrid as the shipping agent. */
export declare class Adyen extends Extension<"adyen", paths, {
    siteCode: string;
}> {
    readonly name = "adyen";
    /**
     * Initializes or updates a purchase with Adyen as the PSP. If `shipping` is specified, a shipping
     * reference must be retrieved before initializing the purchase. The data and session identifier
     * included in the response is used to initialize the Adyen widget.
     */
    begin(args: AdyenBegin.Args): Promise<AdyenBegin.Result>;
    /**
     *    * Seals a purchase with Adyen as the PSP. If `shipping` is specified, it must be called after
     *       * confirming the delivery.
     */
    seal(args: AdyenSeal.Args): Promise<AdyenSeal.Result>;
    /**
     * Initializes or updates a purchase with Adyen as the PSP. If `shipping` is specified, a shipping
     * reference must be retrieved before initializing the purchase. The data and session identifier
     * included in the response is used to initialize the Adyen widget.
     */
    siteBegin(args: SiteAdyenBegin.Args): Promise<SiteAdyenBegin.Result>;
    /**
     * Seals a purchase with Adyen as the PSP. If `shipping` is specified, it must be called after
     * confirming the delivery.
     */
    siteSeal(args: SiteAdyenSeal.Args): Promise<SiteAdyenSeal.Result>;
    paymentMethods(body: AdyenPaymentMethodsRequest.Args): Promise<AdyenPaymentMethodsRequest.Result>;
    paymentRequest(body: AdyenPaymentRequest.Args): Promise<AdyenPaymentRequest.Result>;
}
export declare namespace AdyenBegin {
    type Args = CamelCasedObjectKeys<components["schemas"]["ACOCheckoutRequestV2"]> & SiteArgs;
    type Result = VariableResult<{
        success: Checkout;
        "invalid-args": InvalidArgs;
        "not-found": NotFound;
        unprocessable: Unprocessable;
        "internal-error": InternalError;
    }>;
    /** `201` */
    type Checkout = CamelCasedObjectKeys<components["schemas"]["ACOCheckoutResponse"]>;
    /** `400` */
    type InvalidArgs = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_LocationErrors_"]>;
    /** `404` */
    type NotFound = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_str_"]>;
    /** `422` */
    type Unprocessable = CamelCasedObjectKeys<components["schemas"]["ACOCheckoutErrorResponse"]>;
    /** `503` */
    type InternalError = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_str_"]>;
    type Cart = CamelCasedObjectKeys<components["schemas"]["CartRequest"]>;
    type Shipping = CamelCasedObjectKeys<NonNullable<components["schemas"]["ACOCheckoutRequest"]["shipping"]>>;
    type Item = Cart["items"][number];
}
export declare namespace SiteAdyenBegin {
    type Args = CamelCasedObjectKeys<components["schemas"]["ACOCheckoutRequest"]> & SiteArgs;
    type Result = VariableResult<{
        success: Checkout;
        "invalid-args": InvalidArgs;
        "not-found": NotFound;
        unprocessable: Unprocessable;
        "internal-error": InternalError;
    }>;
    /** `201` */
    type Checkout = CamelCasedObjectKeys<components["schemas"]["ACOCheckoutResponse"]>;
    /** `400` */
    type InvalidArgs = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_LocationErrors_"]>;
    /** `404` */
    type NotFound = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_str_"]>;
    /** `422` */
    type Unprocessable = CamelCasedObjectKeys<components["schemas"]["ACOCheckoutErrorResponse"]>;
    /** `503` */
    type InternalError = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_str_"]>;
    type Cart = CamelCasedObjectKeys<components["schemas"]["CartRequest"]>;
    type Shipping = CamelCasedObjectKeys<NonNullable<components["schemas"]["ACOCheckoutRequest"]["shipping"]>>;
    type Item = Cart["items"][number];
}
export declare namespace AdyenSeal {
    type Args = CamelCasedObjectKeys<components["schemas"]["ACOCheckoutRequestV2"]> & SiteArgs;
    type Result = VariableResult<{
        success: Success;
        redirect: Redirect;
        "invalid-args": InvalidArgs;
        "not-found": NotFound;
        "internal-error": InternalError;
    }>;
    /** `200` */
    type Success = CamelCasedObjectKeys<components["schemas"]["ACOSealResponse"]>;
    /** `307` */
    type Redirect = undefined;
    /** `400` */
    type InvalidArgs = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_LocationErrors_"]>;
    /** `404` */
    type NotFound = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_str_"]>;
    /** `503` */
    type InternalError = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_str_"]>;
    type Cart = CamelCasedObjectKeys<components["schemas"]["CartRequest"]>;
    type Shipping = CamelCasedObjectKeys<NonNullable<components["schemas"]["ACOCheckoutRequest"]["shipping"]>>;
    type Item = Cart["items"][number];
}
export declare namespace SiteAdyenSeal {
    type Args = CamelCasedObjectKeys<components["schemas"]["ACOSealRequest"]> & SiteArgs;
    type Result = VariableResult<{
        success: Success;
        redirect: Redirect;
        "invalid-args": InvalidArgs;
        "not-found": NotFound;
        "internal-error": InternalError;
    }>;
    /** `200` */
    type Success = CamelCasedObjectKeys<components["schemas"]["ACOSealResponse"]>;
    /** `307` */
    type Redirect = undefined;
    /** `400` */
    type InvalidArgs = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_LocationErrors_"]>;
    /** `404` */
    type NotFound = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_str_"]>;
    /** `503` */
    type InternalError = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_str_"]>;
    type Cart = CamelCasedObjectKeys<components["schemas"]["CartRequest"]>;
    type Shipping = CamelCasedObjectKeys<NonNullable<components["schemas"]["ACOCheckoutRequest"]["shipping"]>>;
    type Item = Cart["items"][number];
}
export declare namespace AdyenPaymentMethodsRequest {
    type Args = {
        countryCode: CountryCode;
        method?: string[];
    };
    type Result = VariableResult<{
        success: Success;
        "invalid-args": InvalidArgs;
    }>;
    /** `200` */
    type Success = CamelCasedObjectKeys<components["schemas"]["ACOPaymentMethodsResponse"]>;
    /** `400` */
    type InvalidArgs = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_DetailWithCode_"]>;
}
export declare namespace AdyenPaymentRequest {
    type Args = CamelCasedObjectKeys<components["schemas"]["ACOPaymentRequest"]>;
    type Result = VariableResult<{
        success: Success;
        "invalid-args": InvalidArgs;
        "not-found": NotFound;
        "unprocessable": Unprocessable;
    }>;
    /** `200` */
    type Success = CamelCasedObjectKeys<components["schemas"]["ACOSealResponse"]>;
    /** `400` */
    type InvalidArgs = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_DetailWithCode_"]>;
    /** `404` */
    type NotFound = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_str_"]>;
    /** `422` */
    type Unprocessable = CamelCasedObjectKeys<components["schemas"]["ErrorDetail_DetailWithCode_"]>;
}
