// 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/name_service.proto" (package "sui.rpc.v2", syntax proto3)
// tslint:disable
// @ts-nocheck
//
// Copyright (c) Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0
//
import { ServiceType } from '@protobuf-ts/runtime-rpc';
import { MessageType } from '@protobuf-ts/runtime';
import { Timestamp } from '../../../google/protobuf/timestamp.js';
/**
 * @generated from protobuf message sui.rpc.v2.LookupNameRequest
 */
export interface LookupNameRequest {
	/**
	 * Required. The SuiNS name to lookup.
	 *
	 * Supports both `@name` as well as `name.sui` formats.
	 *
	 * @generated from protobuf field: optional string name = 1;
	 */
	name?: string;
}
/**
 * @generated from protobuf message sui.rpc.v2.LookupNameResponse
 */
export interface LookupNameResponse {
	/**
	 * The record for the requested name
	 *
	 * @generated from protobuf field: optional sui.rpc.v2.NameRecord record = 1;
	 */
	record?: NameRecord;
}
/**
 * @generated from protobuf message sui.rpc.v2.ReverseLookupNameRequest
 */
export interface ReverseLookupNameRequest {
	/**
	 * Required. The address to perform a reverse lookup for.
	 *
	 * @generated from protobuf field: optional string address = 1;
	 */
	address?: string;
}
/**
 * @generated from protobuf message sui.rpc.v2.ReverseLookupNameResponse
 */
export interface ReverseLookupNameResponse {
	/**
	 * The record for the SuiNS name linked to the requested address
	 *
	 * @generated from protobuf field: optional sui.rpc.v2.NameRecord record = 1;
	 */
	record?: NameRecord;
}
/**
 * @generated from protobuf message sui.rpc.v2.NameRecord
 */
export interface NameRecord {
	/**
	 * Id of this record.
	 *
	 * Note that records are stored on chain as dynamic fields of the type
	 * `Field<Domain,NameRecord>`.
	 *
	 * @generated from protobuf field: optional string id = 1;
	 */
	id?: string;
	/**
	 * The SuiNS name of this record
	 *
	 * @generated from protobuf field: optional string name = 2;
	 */
	name?: string;
	/**
	 * The ID of the `RegistrationNFT` assigned to this record.
	 *
	 * The owner of the corresponding `RegistrationNFT` has the rights to
	 * be able to change and adjust the `target_address` of this domain.
	 *
	 * It is possible that the ID changes if the record expires and is
	 * purchased by someone else.
	 *
	 * @generated from protobuf field: optional string registration_nft_id = 3;
	 */
	registrationNftId?: string;
	/**
	 * Timestamp when the record expires.
	 *
	 * This is either the expiration of the record itself or the expiration of
	 * this record's parent if this is a leaf record.
	 *
	 * @generated from protobuf field: optional google.protobuf.Timestamp expiration_timestamp = 4;
	 */
	expirationTimestamp?: Timestamp;
	/**
	 * The target address that this name points to
	 *
	 * @generated from protobuf field: optional string target_address = 5;
	 */
	targetAddress?: string;
	/**
	 * Additional data which may be stored in a record
	 *
	 * @generated from protobuf field: map<string, string> data = 6;
	 */
	data: {
		[key: string]: string;
	};
}
// @generated message type with reflection information, may provide speed optimized methods
class LookupNameRequest$Type extends MessageType<LookupNameRequest> {
	constructor() {
		super('sui.rpc.v2.LookupNameRequest', [
			{ no: 1, name: 'name', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
		]);
	}
}
/**
 * @generated MessageType for protobuf message sui.rpc.v2.LookupNameRequest
 */
export const LookupNameRequest = new LookupNameRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class LookupNameResponse$Type extends MessageType<LookupNameResponse> {
	constructor() {
		super('sui.rpc.v2.LookupNameResponse', [
			{ no: 1, name: 'record', kind: 'message', T: () => NameRecord },
		]);
	}
}
/**
 * @generated MessageType for protobuf message sui.rpc.v2.LookupNameResponse
 */
export const LookupNameResponse = new LookupNameResponse$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ReverseLookupNameRequest$Type extends MessageType<ReverseLookupNameRequest> {
	constructor() {
		super('sui.rpc.v2.ReverseLookupNameRequest', [
			{ no: 1, name: 'address', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
		]);
	}
}
/**
 * @generated MessageType for protobuf message sui.rpc.v2.ReverseLookupNameRequest
 */
export const ReverseLookupNameRequest = new ReverseLookupNameRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ReverseLookupNameResponse$Type extends MessageType<ReverseLookupNameResponse> {
	constructor() {
		super('sui.rpc.v2.ReverseLookupNameResponse', [
			{ no: 1, name: 'record', kind: 'message', T: () => NameRecord },
		]);
	}
}
/**
 * @generated MessageType for protobuf message sui.rpc.v2.ReverseLookupNameResponse
 */
export const ReverseLookupNameResponse = new ReverseLookupNameResponse$Type();
// @generated message type with reflection information, may provide speed optimized methods
class NameRecord$Type extends MessageType<NameRecord> {
	constructor() {
		super('sui.rpc.v2.NameRecord', [
			{ no: 1, name: 'id', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
			{ no: 2, name: 'name', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
			{ no: 3, name: 'registration_nft_id', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
			{ no: 4, name: 'expiration_timestamp', kind: 'message', T: () => Timestamp },
			{ no: 5, name: 'target_address', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
			{
				no: 6,
				name: 'data',
				kind: 'map',
				K: 9 /*ScalarType.STRING*/,
				V: { kind: 'scalar', T: 9 /*ScalarType.STRING*/ },
			},
		]);
	}
}
/**
 * @generated MessageType for protobuf message sui.rpc.v2.NameRecord
 */
export const NameRecord = new NameRecord$Type();
/**
 * @generated ServiceType for protobuf service sui.rpc.v2.NameService
 */
export const NameService = new ServiceType('sui.rpc.v2.NameService', [
	{ name: 'LookupName', options: {}, I: LookupNameRequest, O: LookupNameResponse },
	{
		name: 'ReverseLookupName',
		options: {},
		I: ReverseLookupNameRequest,
		O: ReverseLookupNameResponse,
	},
]);
