// Copyright (c) Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0

// @generated by protobuf-ts 2.9.6 with parameter force_server_none,optimize_code_size,ts_nocheck
// @generated from protobuf file "sui/rpc/v2/epoch.proto" (package "sui.rpc.v2", syntax proto3)
// tslint:disable
// @ts-nocheck
//
// Copyright (c) Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0
//
import { MessageType } from '@protobuf-ts/runtime';
import { ProtocolConfig } from './protocol_config.js';
import { Timestamp } from '../../../google/protobuf/timestamp.js';
import { SystemState } from './system_state.js';
import { ValidatorCommittee } from './signature.js';
/**
 * @generated from protobuf message sui.rpc.v2.Epoch
 */
export interface Epoch {
	/**
	 * @generated from protobuf field: optional uint64 epoch = 1;
	 */
	epoch?: bigint;
	/**
	 * The committee governing this epoch.
	 *
	 * @generated from protobuf field: optional sui.rpc.v2.ValidatorCommittee committee = 2;
	 */
	committee?: ValidatorCommittee;
	/**
	 * Snapshot of Sui's SystemState (`0x3::sui_system::SystemState`) at the
	 * beginning of the epoch, for past epochs, or the current state for the
	 * current epoch.
	 *
	 * @generated from protobuf field: optional sui.rpc.v2.SystemState system_state = 3;
	 */
	systemState?: SystemState;
	/**
	 * @generated from protobuf field: optional uint64 first_checkpoint = 4;
	 */
	firstCheckpoint?: bigint;
	/**
	 * @generated from protobuf field: optional uint64 last_checkpoint = 5;
	 */
	lastCheckpoint?: bigint;
	/**
	 * @generated from protobuf field: optional google.protobuf.Timestamp start = 6;
	 */
	start?: Timestamp;
	/**
	 * @generated from protobuf field: optional google.protobuf.Timestamp end = 7;
	 */
	end?: Timestamp;
	/**
	 * Reference gas price denominated in MIST
	 *
	 * @generated from protobuf field: optional uint64 reference_gas_price = 8;
	 */
	referenceGasPrice?: bigint;
	/**
	 * @generated from protobuf field: optional sui.rpc.v2.ProtocolConfig protocol_config = 9;
	 */
	protocolConfig?: ProtocolConfig;
}
// @generated message type with reflection information, may provide speed optimized methods
class Epoch$Type extends MessageType<Epoch> {
	constructor() {
		super('sui.rpc.v2.Epoch', [
			{
				no: 1,
				name: 'epoch',
				kind: 'scalar',
				opt: true,
				T: 4 /*ScalarType.UINT64*/,
				L: 0 /*LongType.BIGINT*/,
			},
			{ no: 2, name: 'committee', kind: 'message', T: () => ValidatorCommittee },
			{ no: 3, name: 'system_state', kind: 'message', T: () => SystemState },
			{
				no: 4,
				name: 'first_checkpoint',
				kind: 'scalar',
				opt: true,
				T: 4 /*ScalarType.UINT64*/,
				L: 0 /*LongType.BIGINT*/,
			},
			{
				no: 5,
				name: 'last_checkpoint',
				kind: 'scalar',
				opt: true,
				T: 4 /*ScalarType.UINT64*/,
				L: 0 /*LongType.BIGINT*/,
			},
			{ no: 6, name: 'start', kind: 'message', T: () => Timestamp },
			{ no: 7, name: 'end', kind: 'message', T: () => Timestamp },
			{
				no: 8,
				name: 'reference_gas_price',
				kind: 'scalar',
				opt: true,
				T: 4 /*ScalarType.UINT64*/,
				L: 0 /*LongType.BIGINT*/,
			},
			{ no: 9, name: 'protocol_config', kind: 'message', T: () => ProtocolConfig },
		]);
	}
}
/**
 * @generated MessageType for protobuf message sui.rpc.v2.Epoch
 */
export const Epoch = new Epoch$Type();
