import type { AppTransfer, TeamApp } from '@heroku/types/3.sdk'; import type { ResourceCtx } from '../../../core/extend-resource.js'; export type TransferOptions = { personalToPersonal?: boolean; signal?: AbortSignal; silent?: boolean; }; /** * Transfer an app to another user or team. * * Route selection mirrors the platform's two transfer surfaces: * - personal-to-personal transfers go through `POST /account/app-transfers` * (`appTransfer.create`), which emails the recipient for acceptance * (response `state: 'pending'`). * - team-involved transfers go through `PATCH /teams/apps/{name}` * (`teamApp.transferToTeam` / `transferToAccount`), differing only by body. * * The caller (CLI) decides `personalToPersonal` and interprets the returned * `state` for presentation. `personalToPersonal` defaults falsy → the team * route, so a caller who forgets the flag on a genuine personal transfer * silently hits the team path (a caller-owned footgun the SDK can't detect). */ export declare function transferApp(ctx: Pick, appIdentity: string, recipient: string, options?: TransferOptions): Promise;