import { hubspotRequest } from './client.ts'
import { mapAccount } from './models.ts'
import type { HubSpotAccountInfo, HubSpotAuthInput } from './types.ts'
import { optionalString, requireRecord } from './types.ts'
import { requireAuthMode } from './auth.ts'
export type AccountInput = HubSpotAuthInput
/**
* Return the connected HubSpot portal identity without email or company name.
* @example
* import getAccount from 'kody:@kody/hubspot/account'
* const account = await getAccount()
*/
export async function getAccount(input: AccountInput = {}): Promise<HubSpotAccountInfo> {
const result = await hubspotRequest<unknown>({
...input,
operation: 'account.read',
path: '/account-info/v3/details',
})
return mapAccount(result.data)
}
/**
* Return the connected HubSpot portal identity without email or company name.
* @example
* import getAccount from 'kody:@kody/hubspot/account'
* const account = await getAccount({ integrationName: 'hubspot-work' })
*/
export default async function accountEntrypoint(
params: AccountInput & Record<string, unknown> = {},
) {
const input = requireRecord(params, 'account')
return getAccount({
integrationName: optionalString(input.integrationName, 'integrationName'),
integration: optionalString(input.integration, 'integration'),
account: optionalString(input.account, 'account'),
secretName: optionalString(input.secretName, 'secretName'),
auth: requireAuthMode(input.auth),
})
}