import { ClassConstructorReturnType, ClassDefinition, isClassDefinition } from './types'

const AWS_MODULE = 'AWS_MODULE'

export function getClientToken<C extends ClassDefinition>(
	client: ClassDefinition | ClassConstructorReturnType<C>,
	key = '',
) {
	if (isClassDefinition(client)) {
		return `${AWS_MODULE}#${client.name}#${key}`
	} else {
		const className = client.__proto__.constructor.name as string
		return `${AWS_MODULE}#${className}#${key}`
	}
}
