/** * Default permission level members have for organization repositories: * \* `read` - can pull, but not push to or administer this repository. * \* `write` - can pull and push, but not administer this repository. * \* `admin` - can pull, push, and administer this repository. * \* `none` - no permissions granted by default. */ type DefaultRepositoryPermission = 'read' | 'write' | 'admin' | 'none'; export interface AppsCreateInstallationAccessTokenResponse { type: string; tokenType: string; token: string; installationId: number; permissions: { actions: DefaultRepositoryPermission; administration: DefaultRepositoryPermission; checks: DefaultRepositoryPermission; contents: DefaultRepositoryPermission; issues: DefaultRepositoryPermission; metadata: DefaultRepositoryPermission; pull_requests: DefaultRepositoryPermission; statuses: DefaultRepositoryPermission; }; createdAt: string; expiresAt: string; repositorySelection: 'all' | 'selected'; } export const isObject = (value: unknown): value is Record => { return !!value && typeof value === 'object'; }; export const isString = (value: unknown): value is string => typeof value === 'string'; export const isAppsCreateInstallationAccessTokenResponse = ( response: unknown ): response is AppsCreateInstallationAccessTokenResponse => { return isObject(response) && typeof response?.token === 'string'; }; export const isError = (e: unknown): e is Error => e instanceof Error;