// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This file was auto-generated by the vanadium vdl tool.
// Package: main

package main

import (
	"v.io/v23/context"
	"v.io/v23/i18n"
	"v.io/v23/verror"
)

func __VDLEnsureNativeBuilt() {
}

var (
	ErrKeyRejected = verror.Register("v.io/x/lock/lock.KeyRejected", verror.NoRetry, "{1:}{2:} receiver rejected key {3} for lock {4}")
)

func init() {
	i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrKeyRejected.ID), "{1:}{2:} receiver rejected key {3} for lock {4}")
}

// NewErrKeyRejected returns an error with the ErrKeyRejected ID.
func NewErrKeyRejected(ctx *context.T, key string, lock string) error {
	return verror.New(ErrKeyRejected, ctx, key, lock)
}
