export {
CLIENT_ID_SETUP_URL,
CLIENT_SECRET_SETUP_URL,
DASHBOARD_APPS_URL,
LIVE_API_BASE_URL,
LIVE_API_HOST,
PayPalApiError,
SANDBOX_API_BASE_URL,
SANDBOX_API_HOST,
clientIdSetupUrl,
clientSecretSetupUrl,
mutationPreview,
paypalListBalances,
resolveClientIdSecretName,
resolveClientSecretSecretName,
} from './paypal-core.ts'
export {
createInvoice,
findInvoice,
getInvoice,
listInvoices,
searchInvoices,
sendInvoice,
summarizeInvoice,
} from './invoices.ts'
export { findTransaction, listTransactions, searchTransactions } from './transactions.ts'
export { createPayout, getPayout, getPayoutItem } from './payouts.ts'
export { searchInvoicesForReimbursement } from './reimbursements.ts'
export { smokeTest } from './smoke-test.ts'
export {
balancesGet,
invoicesCreate,
invoicesGet,
invoicesList,
invoicesSearchInvoices,
invoicesSend,
payoutsCreate,
payoutsGet,
payoutsItemGet,
searchGet,
} from './openapi-client.ts'
import {
createInvoice,
findInvoice,
getInvoice,
listInvoices,
searchInvoices,
sendInvoice,
summarizeInvoice,
} from './invoices.ts'
import { createPayout, getPayout, getPayoutItem } from './payouts.ts'
import { parseAction, paypalListBalances } from './paypal-core.ts'
import { searchInvoicesForReimbursement } from './reimbursements.ts'
import { smokeTest } from './smoke-test.ts'
import { findTransaction, listTransactions, searchTransactions } from './transactions.ts'
const actions = {
'smoke-test': smokeTest,
'list-invoices': listInvoices,
'get-invoice': getInvoice,
'search-invoices': searchInvoices,
'find-invoice': findInvoice,
'summarize-invoice': summarizeInvoice,
'create-invoice': createInvoice,
'send-invoice': sendInvoice,
'list-transactions': listTransactions,
'search-transactions': searchTransactions,
'find-transaction': findTransaction,
'list-balances': paypalListBalances,
'search-reimbursement': searchInvoicesForReimbursement,
'search-invoices-for-reimbursement': searchInvoicesForReimbursement,
'create-payout': createPayout,
'get-payout': getPayout,
'get-payout-item': getPayoutItem,
} as const
export type PayPalAction = keyof typeof actions
const actionNames = Object.keys(actions) as PayPalAction[]
/**
* Root dispatcher for PayPal helpers. Defaults to the read-only smoke test.
* @example
* import paypal from 'kody:@kody/paypal'
* const result = await paypal({ action: 'list-invoices', pageSize: 5 })
*/
export default async function paypal(input: Record<string, unknown> = {}) {
const action = parseAction(input.action, actionNames, 'smoke-test', 'PayPal')
const handler = actions[action]
return await handler(input as never)
}