import { DataWithOptionalCause, EthereumProviderError, OptionalDataWithOptionalCause } from "@metamask/rpc-errors";
import { JsonRpcError } from "@metamask/rpc-errors";
import type { CaveatConstraint } from "./Caveat.cjs";
import type { PermissionType } from "./Permission.cjs";
import type { PermissionDiffMap } from "./PermissionController.cjs";
type UnauthorizedArg = {
    data?: Record<string, unknown>;
    message?: string;
};
/**
 * Utility function for building an "unauthorized" error.
 *
 * @param opts - Optional arguments that add extra context
 * @returns The built error
 */
export declare function unauthorized(opts: UnauthorizedArg): EthereumProviderError<UnauthorizedArg>;
/**
 * Utility function for building a "method not found" error.
 *
 * @param method - The method in question.
 * @param data - Optional data for context.
 * @returns The built error
 */
export declare function methodNotFound(method: string, data?: DataWithOptionalCause): JsonRpcError<OptionalDataWithOptionalCause>;
type InvalidParamsArg = {
    message?: string;
    data?: DataWithOptionalCause;
};
/**
 * Utility function for building an "invalid params" error.
 *
 * @param opts - Optional arguments that add extra context
 * @returns The built error
 */
export declare function invalidParams(opts: InvalidParamsArg): JsonRpcError<DataWithOptionalCause>;
/**
 * Utility function for building an "user rejected request" error.
 *
 * @param data - Optional data to add extra context
 * @returns The built error
 */
export declare function userRejectedRequest<Data extends Record<string, unknown>>(data?: Data): JsonRpcError<Data>;
/**
 * Utility function for building an internal error.
 *
 * @param message - The error message
 * @param data - Optional data to add extra context
 * @returns The built error
 */
export declare function internalError<Data extends Record<string, unknown>>(message: string, data?: Data): JsonRpcError<Data>;
declare class CustomError extends Error {
    constructor(message?: string);
}
export declare class InvalidSubjectIdentifierError extends CustomError {
    constructor(origin: unknown);
}
export declare class UnrecognizedSubjectError extends CustomError {
    constructor(origin: string);
}
export declare class CaveatMergerDoesNotExistError extends CustomError {
    constructor(caveatType: string);
}
export declare class InvalidMergedPermissionsError extends Error {
    cause: Error;
    data: {
        diff: PermissionDiffMap<string, CaveatConstraint>;
    };
    constructor(origin: string, cause: Error, diff: PermissionDiffMap<string, CaveatConstraint>);
}
export declare class InvalidApprovedPermissionError extends CustomError {
    data: {
        origin: string;
        target: string;
        approvedPermission: Record<string, unknown>;
    };
    constructor(origin: string, target: string, approvedPermission: Record<string, unknown>);
}
export declare class PermissionDoesNotExistError extends CustomError {
    constructor(origin: string, target: string);
}
export declare class EndowmentPermissionDoesNotExistError extends CustomError {
    data?: {
        origin: string;
    };
    constructor(target: string, origin?: string);
}
export declare class UnrecognizedCaveatTypeError extends CustomError {
    data: {
        caveatType: string;
        origin?: string;
        target?: string;
    };
    constructor(caveatType: string);
    constructor(caveatType: string, origin: string, target: string);
}
export declare class InvalidCaveatsPropertyError extends CustomError {
    data: {
        origin: string;
        target: string;
        caveatsProperty: unknown;
    };
    constructor(origin: string, target: string, caveatsProperty: unknown);
}
export declare class CaveatDoesNotExistError extends CustomError {
    constructor(origin: string, target: string, caveatType: string);
}
export declare class CaveatAlreadyExistsError extends CustomError {
    constructor(origin: string, target: string, caveatType: string);
}
export declare class InvalidCaveatError extends JsonRpcError<DataWithOptionalCause | undefined> {
    data: {
        origin: string;
        target: string;
    };
    constructor(receivedCaveat: unknown, origin: string, target: string);
}
export declare class InvalidCaveatTypeError extends CustomError {
    data: {
        caveat: Record<string, unknown>;
        origin: string;
        target: string;
    };
    constructor(caveat: Record<string, unknown>, origin: string, target: string);
}
export declare class CaveatMissingValueError extends CustomError {
    data: {
        caveat: Record<string, unknown>;
        origin: string;
        target: string;
    };
    constructor(caveat: Record<string, unknown>, origin: string, target: string);
}
export declare class CaveatInvalidJsonError extends CustomError {
    data: {
        caveat: Record<string, unknown>;
        origin: string;
        target: string;
    };
    constructor(caveat: Record<string, unknown>, origin: string, target: string);
}
export declare class InvalidCaveatFieldsError extends CustomError {
    data: {
        caveat: Record<string, unknown>;
        origin: string;
        target: string;
    };
    constructor(caveat: Record<string, unknown>, origin: string, target: string);
}
export declare class ForbiddenCaveatError extends CustomError {
    data: {
        caveatType: string;
        origin: string;
        target: string;
    };
    constructor(caveatType: string, origin: string, targetName: string);
}
export declare class DuplicateCaveatError extends CustomError {
    data: {
        caveatType: string;
        origin: string;
        target: string;
    };
    constructor(caveatType: string, origin: string, targetName: string);
}
export declare class CaveatMergeTypeMismatchError extends CustomError {
    data: {
        leftCaveatType: string;
        rightCaveatType: string;
    };
    constructor(leftCaveatType: string, rightCaveatType: string);
}
export declare class CaveatSpecificationMismatchError extends CustomError {
    data: {
        caveatSpec: Record<string, unknown>;
        permissionType: PermissionType;
    };
    constructor(caveatSpec: Record<string, unknown>, permissionType: PermissionType);
}
export declare class PermissionsRequestNotFoundError extends CustomError {
    constructor(id: string);
}
export {};
//# sourceMappingURL=errors.d.cts.map