// 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.

package rpc

error (
	// Internal errors.
	badRequest(err error) {
		"en": "failed to decode request: {err}",
	}
	badNumInputArgs(suffix, method string, numCalled, numWanted uint64) {
		"en": "wrong number of input arguments for {suffix}.{method} (called with {numCalled} args, want {numWanted})",
	}
	badInputArg(suffix, method string, index uint64, err error) {
		"en": "method {suffix}.{method} has bad arg #{index}: {err}",
	}
	badBlessings(err error) {
		"en": "failed to decode blessings: {err}",
	}
	badBlessingsCache(err error) {
		"en": "failed to find blessings in cache: {err}",
	}
	badDischarge(index uint64, err error) {
		"en": "failed to decode discharge #{index}: {err}",
	}
	badAuth(suffix, method string, err error) {
		"en": "not authorized to call {suffix}.{method}: {err}",
	}
	typeFlowFailure(err error) {
		"en": "type flow could not be constructed{:err}",
	}
	serverBlessingsWrongPublicKey() {
		"en": "server blessings do not match the principals public key",
	}
	serverPeersEmpty() {
		"en": "no peers are authorized to communicate with the server",
	}
	serverPeersWithPublishing() {
		"en": "ServerPeers option is not supported for servers that publish their endpoint at a mounttable",
	}
)
