import { EmitterWebhookEventName, EmitterWebhookEvent } from '@octokit/webhooks';
import * as _sinclair_typebox from '@sinclair/typebox';
import { StaticDecode } from '@sinclair/typebox';

declare const commandCallSchema: _sinclair_typebox.TUnion<[_sinclair_typebox.TNull, _sinclair_typebox.TObject<{
    name: _sinclair_typebox.TString;
    parameters: _sinclair_typebox.TUnknown;
}>]>;
type CommandCall = StaticDecode<typeof commandCallSchema>;

declare class PluginInput<T extends EmitterWebhookEventName = EmitterWebhookEventName> {
    private _privateKey;
    stateId: string;
    eventName: T;
    eventPayload: EmitterWebhookEvent<T>["payload"];
    settings: unknown;
    authToken: string;
    ref: string;
    command: CommandCall;
    constructor(privateKey: string, stateId: string, eventName: T, eventPayload: EmitterWebhookEvent<T>["payload"], settings: unknown, authToken: string, ref: string, command: CommandCall);
    getInputs(): Promise<{
        signature: string;
        stateId: string;
        eventName: T;
        eventPayload: string;
        settings: string;
        authToken: string;
        ref: string;
        command: string;
    }>;
}
interface Inputs {
    stateId: unknown;
    eventName: unknown;
    eventPayload: unknown;
    authToken: unknown;
    settings: unknown;
    ref: unknown;
    command: unknown;
}
declare function verifySignature(publicKeyPem: string, inputs: Inputs, signature: string): Promise<boolean>;
declare function signPayload(payload: string, privateKey: string): Promise<string>;

export { PluginInput, signPayload, verifySignature };
