import { CapsToCamel } from '../utils.js';
import { Entity } from './index.js';
export declare function requestIssueBillingKeyAndPay(request: IssueBillingKeyAndPayRequest): Promise<IssueBillingKeyAndPayResponse>;
export type IssueBillingKeyAndPayRequest = {
    storeId: string;
    paymentId: string;
    orderName: string;
    totalAmount: number;
    currency: Entity.Currency;
    channelKey?: string;
    pgProvider?: Entity.PgProvider;
    isTestChannel?: boolean;
    taxFreeAmount?: number;
    vatAmount?: number;
    customer?: Entity.Customer;
    billingKeyAndPayMethod: Entity.BillingKeyAndPayMethod;
    windowType?: Entity.WindowTypes;
    redirectUrl?: string;
    noticeUrls?: string[];
    locale?: Entity.Locale;
    isCulturalExpense?: boolean;
    customData?: Record<string, any>;
    offerPeriod?: Entity.OfferPeriod;
    appScheme?: string;
    productType?: Entity.ProductType;
    storeDetails?: Entity.StoreDetails;
    country?: Entity.Country;
    bypass?: Entity.IssueBillingKeyAndPayBypass;
    popup?: Entity.Popup;
    iframe?: Entity.Iframe;
} & (BillingKeyAndPayMethodOptions<'MOBILE', Mobile> | {
    billingKeyAndPayMethod?: undefined;
});
/**
 * iframe/popup 방식으로 PG사 창이 렌더링 된 경우
 * 프로세스 종료 후, 콜백 함수로 전달 될 빌링키 발급 및 결제 정보 데이터
 */
export type IssueBillingKeyAndPayResponse = {
    transactionType: typeof Entity.TransactionType.ISSUE_BILLING_KEY_AND_PAY;
    txId: string;
    paymentId: string;
    billingKey: string;
    code?: string;
    message?: string;
    pgCode?: string;
    pgMessage?: string;
};
type BillingKeyAndPayMethodOptions<Method extends Entity.BillingKeyAndPayMethod, T> = {
    billingKeyAndPayMethod: Method;
} & {
    [K in Method as CapsToCamel<K>]?: T;
};
type Mobile = {
    carrier?: Entity.Carrier;
    availableCarriers?: Entity.Carrier[];
};
export {};
