interface ServiceAccountCredentials { client_email: string; private_key: string; token_uri?: string; [key: string]: unknown; } export interface ChromeWebStoreConfig { publisherId: string; itemId: string; publishType?: 'DEFAULT_PUBLISH' | 'STAGED_PUBLISH'; deployPercentage?: number; dryRun?: boolean; forceCancelPendingReview?: boolean; skipReview?: boolean; serviceAccount: ServiceAccountCredentials; } interface FetchStatusResponse { name: string; itemId: string; publishedItemRevisionStatus?: ItemRevisionStatus; submittedItemRevisionStatus?: ItemRevisionStatus; lastAsyncUploadState?: string; takenDown?: boolean; warned?: boolean; } interface ItemRevisionStatus { state?: string; } export interface ChromeWebStorePublishResult { version: string; itemId: string; uploadState: string; publishState: string; } export interface PublishChromeWebStoreOptions { env?: NodeJS.ProcessEnv; fetchImpl?: typeof fetch; log?: Pick; manifestPath?: string; projectRoot?: string; nowSeconds?: () => number; pollIntervalMs?: number; maxUploadPollAttempts?: number; waitMs?: (ms: number) => Promise; } export declare function parseServiceAccountCredentials(jsonValue: string | undefined, base64Value: string | undefined): ServiceAccountCredentials | undefined; export declare function readChromeWebStoreConfig(env?: NodeJS.ProcessEnv): ChromeWebStoreConfig | null; export declare function createServiceAccountAssertion(serviceAccount: ServiceAccountCredentials, nowSeconds: number): string; export declare function waitForUploadCompletion(config: ChromeWebStoreConfig, accessToken: string, fetchImpl: typeof fetch, waitMs: (ms: number) => Promise, pollIntervalMs: number, maxAttempts: number): Promise; export declare function publishChromeWebStoreRelease(options?: PublishChromeWebStoreOptions): Promise; export {};