+**Typescript**
+
+If you want to use __Typescript__, you can add __PeerTube__ types as dev dependencies:
+
+```
+npm install --save-dev @peertube/peertube-types
+```
+
+This package exposes *server* definition files by default:
+```ts
+import { RegisterServerOptions } from '@peertube/peertube-types'
+
+export async function register ({ registerHook }: RegisterServerOptions) {
+ registerHook({
+ target: 'action:application.listening',
+ handler: () => displayHelloWorld()
+ })
+}
+```
+
+But it also exposes client types and various models used in __PeerTube__:
+```ts
+import { Video } from '@peertube/peertube-types';
+import { RegisterClientOptions } from '@peertube/peertube-types/client';
+
+function register({ registerHook, peertubeHelpers }: RegisterClientOptions) {
+ registerHook({
+ target: 'action:admin-plugin-settings.init',
+ handler: ({ npmName }: { npmName: string }) => {
+ if ('peertube-plugin-transcription' !== npmName) {
+ return;
+ }
+ },
+ });
+
+ registerHook({
+ target: 'action:video-watch.video.loaded',
+ handler: ({ video }: { video: Video }) => {
+ fetch(`${peertubeHelpers.getBaseRouterRoute()}/videos/${video.uuid}/captions`, {
+ method: 'PUT',
+ headers: peertubeHelpers.getAuthHeader(),
+ }).then((res) => res.json())
+ .then((data) => console.log('Hi %s.', data));
+ },
+ });
+}
+
+export { register };
+```
+