import { Player } from "@minecraft/server";
import { ActionFormResponse } from "@minecraft/server-ui";

declare class ChestFormData {
	/**
	 * @param ukuran peti yang akan ditampilkan.
	 */
	constructor(size?: 'small' | 'single' | 'large' | 'double' | '5' | '9' | '18' | '27' | '36' | '45' | '54');
	/**
	 * @remarks Jumlah slot di ui dada.
	 */
	public slotCount: number;
	/**
	 * @remarks Metode pembangun ini menetapkan judul untuk antarmuka pengguna peti.
* @param text Teks judul untuk antarmuka pengguna peti.
	 */
	title(text: string): ChestFormData;
	/**
	 * @remarks Menambahkan tombol ke tampilan peti ini dengan ikon dari paket sumber daya.
	 * @param slot Slot untuk menampilkan item.
	 * @param itemName Nama item yang akan ditampilkan.
	 * @param itemDesc Pengetahuan item yang akan ditampilkan.
	 * @param texture ID tipe atau jalur ke tekstur. **ANDA HARUS MENYERTAKAN AWALAN ITEM!** Untuk vanilla adalah `minecraft:`. Periksa `typeIds.js` untuk item & nilai data yang valid.
* @param stackAmount Tumpukan
	 * @param daya tahan Daya tahan untuk item. Default=0. Dijepit antara 1 & 99.
* @param enchanted Jika item tersebut disihir atau tidak.
	 */
	button(slot: number, itemName?: string, itemDesc?: string[], texture?: string,  stackAmount?: number, durability?: number, enchanted?: boolean): ChestFormData;
	/**
	* @remarks Mengisi slot berdasarkan string dan kunci, dengan slot pertama menjadi koordinat tempat pola dimulai.
* @param pola Pola yang akan digunakan, dengan karakter yang tidak didefinisikan dalam kunci dibiarkan kosong
	* @contoh
	* gui.pattern([
				'xxxxxxxxx',
				'x_______x',
				'x___a___x',
				'x_______x',
				'x_______x',
				'xxxxxxxxx'
		], {
			x:  { itemName: '', itemDesc: [], enchanted: false, stackAmount: 1, texture: 'minecraft:stained_glass_pane' },
			a:  { itemName: 'Anvil', itemDesc: [], enchanted: true, stackAmount: 16, texture: 'minecraft:anvil'},
		})
	*/
	pattern(pattern: string[], key: { [key: string]: { itemName?: string, itemDesc?: string[], stackSize?: number, enchanted?: boolean, durability?: number, texture: string } }): ChestFormData;
	/**
	  * @remarks
* Membuat dan menampilkan formulir popup modal ini. Mengembalikan
* secara asinkron saat pemain mengonfirmasi atau membatalkan
* dialog.
	  *
	  * Fungsi ini tidak dapat dipanggil dalam mode baca-saja.
	  *
	  * @param player
* Pemain yang akan ditampilkan dialog ini.
	 */
	show(player: Player): Promise<ActionFormResponse>;
}
export { ChestFormData };
