import { type HttpMetaParams } from "../../interfaces/index.js"; import { type Token } from "../entities/v1/index.js"; interface BaseCreateTokenParams { /** Set equal to `authorization_code` if code is provided in order to gain user-level access. Otherwise, set equal to `client_credentials` to obtain app-level access only. */ readonly grantType: T; /** The client ID, obtained during app registration. */ readonly clientId: string; /** The client secret, obtained during app registration. */ readonly clientSecret: string; /** Set a URI to redirect the user to. If this parameter is set to urn:ietf:wg:oauth:2.0:oob then the token will be shown instead. Must match one of the `redirect_uris` declared during app registration. */ readonly redirectUri: string; /** List of requested OAuth scopes, separated by spaces (or by pluses, if using query parameters). If code was provided, then this must be equal to the `scope` requested from the user. Otherwise, it must be a subset of `scopes` declared during app registration. If not provided, defaults to read. */ readonly scope?: string | null; } export interface CreateTokenWithAuthorizationCodeParams extends BaseCreateTokenParams<"authorization_code"> { /** A user authorization code, obtained via GET /oauth/authorize. */ readonly code: string; } export type CreateTokenWithClientCredentialsParams = BaseCreateTokenParams<"client_credentials">; export interface CreateTokenWithPasswordParams extends BaseCreateTokenParams<"password"> { readonly password: string; readonly username: string; } export type CreateTokenParams = CreateTokenWithClientCredentialsParams | CreateTokenWithPasswordParams | CreateTokenWithAuthorizationCodeParams; export interface TokenResource { create(params: CreateTokenParams, meta?: HttpMetaParams<"multipart-form">): Promise; } /** @deprecated Use `TokenResource` instead */ export type TokenRepository = TokenResource; export {};