import { ChannelPolicyManager } from '@pellux/goodvibes-sdk/platform/channels/policy-manager';
import type { ChannelAccountRecord, ChannelAllowlistEditInput, ChannelAllowlistEditResult, ChannelAllowlistResolution, ChannelDoctorReport, ChannelLifecycleState, ChannelRepairAction, ChannelResolvedTarget, ChannelSurface, ChannelTargetResolveOptions } from '@pellux/goodvibes-sdk/platform/channels/types';
import type { ChannelPlugin } from '../plugin-registry.js';
import { type BuiltinChannelRuntimeDeps } from './shared.js';
interface BuiltinContractContext {
    readonly deps: BuiltinChannelRuntimeDeps;
    readonly channelPolicy: ChannelPolicyManager;
    readonly buildAccount: (surface: ChannelSurface) => Promise<ChannelAccountRecord>;
    readonly resolveAccount: (surface: ChannelSurface, accountId: string) => Promise<ChannelAccountRecord | null>;
    readonly resolveTarget: (surface: ChannelSurface, options: ChannelTargetResolveOptions) => Promise<ChannelResolvedTarget | null>;
}
export declare function buildBuiltinContractHooks(context: BuiltinContractContext, surface: ChannelSurface): Pick<ChannelPlugin, 'setupVersion' | 'renderPolicy' | 'getSetupSchema' | 'doctor' | 'listRepairActions' | 'getLifecycleState' | 'migrateLifecycle' | 'resolveAllowlist' | 'editAllowlist'>;
export declare function listBuiltinRepairActions(context: BuiltinContractContext, surface: ChannelSurface, accountId?: string): Promise<readonly ChannelRepairAction[]>;
export declare function getBuiltinDoctorReport(context: BuiltinContractContext, surface: ChannelSurface, accountId?: string): Promise<ChannelDoctorReport>;
export declare function getBuiltinLifecycleState(context: BuiltinContractContext, surface: ChannelSurface, accountId?: string): Promise<ChannelLifecycleState>;
export declare function migrateBuiltinLifecycle(context: BuiltinContractContext, surface: ChannelSurface, accountId?: string, _input?: Record<string, unknown>): Promise<ChannelLifecycleState>;
export declare function resolveBuiltinAllowlist(context: BuiltinContractContext, surface: ChannelSurface, input: ChannelAllowlistEditInput): Promise<ChannelAllowlistResolution>;
export declare function editBuiltinAllowlist(context: BuiltinContractContext, surface: ChannelSurface, input: ChannelAllowlistEditInput): Promise<ChannelAllowlistEditResult>;
export {};
//# sourceMappingURL=contracts.d.ts.map