settings:
  debug: false

  payment:
    poll-seconds: 30
    invoice-expire-minutes: 30
    confirmations-required: 2
    max-pending-per-player: 1
    allow-cancel: true
    auto-close-paid-invoice-seconds: 5
    mark-expired-on-open: true
    strict-exact-amount-match: true
    allow-late-match-if-unclaimed: true
    late-match-grace-minutes: 120

  pricing:
    mode: "LIVE_USD"
    live-rate-provider: "COINGECKO"
    cache-seconds: 60
    fallback-to-base-sats: true
    round-up-to-sat: true
    coingecko-url: "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd"

  micro-amount:
    mode: "RANDOM_RANGE"
    min-extra-sats: 1
    max-extra-sats: 200
    sequential-start-sats: 1
    sequential-reset-when-server-restarts: false
    avoid-duplicate-active-amounts: true
    max-generation-attempts: 500

  storage:
    type: "SQLITE"
    sqlite-file: "dirtcryptostore.db"
    prune-enabled: true
    prune-after-days: 30
    prune-statuses:
      - "FULFILLED"
      - "EXPIRED"
      - "CANCELLED"

  qr:
    enabled: true
    map-title: "&8Crypto QR"
    include-bitcoin-uri-in-lore: true
    include-wallet-address-in-lore: true
    include-expiry-in-lore: true
    include-confirmations-in-lore: true
    show-qr-item-in-payment-gui: true
    fallback-material-if-map-fails: "PAPER"

  blockchain:
    watcher-mode: "API"
    provider: "BLOCKCHAIN_INFO"
    request-timeout-seconds: 10
    user-agent: "DirtCryptoStore/1.0.0"
    wallet-cache-seconds: 20
    tx-cache-seconds: 20

  commands:
    dispatch-as-console: true
    stop-on-command-failure: false
    log-dispatch: true

  hooks:
    use-placeholderapi-if-present: false
    use-luckperms-context-if-present: false

wallets:
  default:
    enabled: true
    display-name: "&6Bitcoin Wallet"
    coin: "BTC"
    address: "PUT_YOUR_CAKE_WALLET_BTC_ADDRESS_HERE"
    explorer-type: "BTC"
    min-confirmations: 2
    allow-products: ["tip_jar", "gold_dust", "dirt_rich"]

messages:
  prefix: "&8[&6DirtCryptoStore&8] "

  no-permission: "&cYou do not have permission."
  player-only: "&cOnly players can use this command."
  reloaded: "&aDirtCryptoStore reloaded."
  opening-store: "&aOpening crypto store..."
  admin-reload-usage: "&eUse: /cryptostore reload"

  already-has-pending: "&cYou already have a pending payment."
  no-pending-payment: "&cYou do not have a pending payment."
  invoice-created: "&aInvoice created for &f%product%&a."
  invoice-expired: "&cThis payment request expired."
  invoice-cancelled: "&eYour pending payment was cancelled."
  invoice-paid-already: "&eThis invoice is already paid."
  invoice-view-only: "&eThis invoice can no longer be changed."
  pricing-unavailable: "&cLive BTC pricing is currently unavailable. Please try again in a moment."

  payment-detected: "&aPayment detected for &f%product%&a. Waiting for confirmations..."
  payment-confirmed: "&aYour crypto payment for &f%product% &ahas been confirmed."
  payment-fulfilled: "&aYour purchase has been delivered."
  payment-under-review: "&cThis payment requires staff review."
  payment-not-found-yet: "&7No matching payment detected yet."
  payment-status-waiting: "&eStatus: WAITING"
  payment-status-detected: "&aStatus: DETECTED"
  payment-status-confirming: "&6Status: CONFIRMING"
  payment-status-paid: "&aStatus: PAID"
  payment-status-expired: "&cStatus: EXPIRED"
  payment-status-cancelled: "&cStatus: CANCELLED"

  qr-expiry-line: "&7Expires in: &f%time%"
  confirm-line: "&7Required confirmations: &f%confirmations%"
  wallet-line: "&7Wallet: &f%wallet%"
  wallet-address-line: "&7Address: &f%address%"
  amount-line: "&7Amount: &f%amount%"
  amount-sats-line: "&7Amount (sats): &f%amount_sats%"
  product-line: "&7Product: &f%product%"
  txid-line: "&7TXID: &f%txid%"

  gui-cancel-button: "&cCancel Payment"
  gui-back-button: "&eBack"
  gui-close-button: "&cClose"
  gui-refresh-button: "&bRefresh"
  gui-confirmed-button: "&aPaid"
  gui-expired-button: "&cExpired"
  gui-pending-button: "&ePending"

sounds:
  enabled: true

  store-open:
    sound: "BLOCK_ENDER_CHEST_OPEN"
    volume: 1.0
    pitch: 1.0

  click:
    sound: "UI_BUTTON_CLICK"
    volume: 1.0
    pitch: 1.0

  invoice-created:
    sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
    volume: 1.0
    pitch: 1.2

  payment-detected:
    sound: "BLOCK_NOTE_BLOCK_PLING"
    volume: 1.0
    pitch: 1.5

  payment-confirmed:
    sound: "ENTITY_PLAYER_LEVELUP"
    volume: 1.0
    pitch: 1.0

  cancelled:
    sound: "ENTITY_VILLAGER_NO"
    volume: 1.0
    pitch: 1.0

  expired:
    sound: "BLOCK_ANVIL_LAND"
    volume: 0.7
    pitch: 1.0

effects:
  enabled: true

  store-open:
    enabled: false
    type: "VILLAGER_HAPPY"
    count: 10
    offset-x: 0.3
    offset-y: 0.6
    offset-z: 0.3
    extra: 0.0

  invoice-created:
    enabled: true
    type: "TOTEM_OF_UNDYING"
    count: 12
    offset-x: 0.4
    offset-y: 0.8
    offset-z: 0.4
    extra: 0.0

  payment-detected:
    enabled: true
    type: "COMPOSTER"
    count: 8
    offset-x: 0.3
    offset-y: 1.0
    offset-z: 0.3
    extra: 0.0

  payment-confirmed:
    enabled: true
    type: "FIREWORK"
    count: 20
    offset-x: 0.5
    offset-y: 1.0
    offset-z: 0.5
    extra: 0.0

  cancelled:
    enabled: false
    type: "SMOKE"
    count: 8
    offset-x: 0.2
    offset-y: 0.4
    offset-z: 0.2
    extra: 0.0

  expired:
    enabled: false
    type: "SMOKE"
    count: 8
    offset-x: 0.2
    offset-y: 0.4
    offset-z: 0.2
    extra: 0.0

titles:
  enabled: true

  invoice-created:
    title: "&6Crypto Invoice"
    subtitle: "&7Scan the QR and pay the exact amount"
    fade-in: 10
    stay: 50
    fade-out: 10

  payment-detected:
    title: "&aPayment Detected"
    subtitle: "&7Waiting for confirmations"
    fade-in: 10
    stay: 40
    fade-out: 10

  payment-confirmed:
    title: "&aPayment Confirmed"
    subtitle: "&fYour purchase has been delivered"
    fade-in: 10
    stay: 60
    fade-out: 10

  cancelled:
    title: "&cPayment Cancelled"
    subtitle: "&7Your pending invoice was cancelled"
    fade-in: 10
    stay: 40
    fade-out: 10

gui:
  use-custom-model-data: false

  store:
    title: "&8Crypto Store"
    size: 27
    open-sound: true

    items:
      filler:
        enabled: true
        material: "GRAY_STAINED_GLASS_PANE"
        name: " "
        lore: []
        slots:
          - 0
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
          - 8
          - 9
          - 17
          - 18
          - 19
          - 20
          - 21
          - 22
          - 23
          - 24
          - 25
          - 26

      close:
        enabled: true
        material: "BARRIER"
        name: "&cClose"
        lore:
          - "&7Close the store."
        slot: 26

      refresh:
        enabled: true
        material: "SUNFLOWER"
        name: "&eRefresh"
        lore:
          - "&7Refresh the store view."
        slot: 18

      info:
        enabled: true
        material: "BOOK"
        name: "&6How Crypto Payments Work"
        lore:
          - "&7Click a product to create a payment invoice."
          - "&7You must send the exact amount shown."
          - "&7Your QR expires after &f30 minutes&7."
          - "&7You can cancel your payment from the payment menu."
        slot: 22

  payment:
    title: "&8Crypto Payment"
    size: 27

    items:
      filler:
        enabled: true
        material: "BLACK_STAINED_GLASS_PANE"
        name: " "
        lore: []
        slots:
          - 0
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
          - 8
          - 9
          - 17
          - 18
          - 20
          - 24
          - 25
          - 26

      product:
        enabled: true
        material: "CHEST"
        name: "&6Purchase Details"
        lore:
          - "&7Product: &f%product%"
          - "&7Price: &f%amount%"
          - "&7Wallet: &f%wallet%"
          - "&7Address: &f%address%"
          - "&7Status: &f%status%"
          - "&7Expires in: &f%time%"
        slot: 11

      qr:
        enabled: true
        material: "FILLED_MAP"
        name: "&aScan QR To Pay"
        lore:
          - "&7Scan this QR with your wallet app."
          - "&7"
          - "&7Amount: &f%amount%"
          - "&7Address: &f%address%"
          - "&7"
          - "&7If your wallet does not scan maps well,"
          - "&7use the URI manually:"
          - "&f%bitcoin_uri%"
        slot: 13

      status:
        enabled: true
        material: "CLOCK"
        name: "&ePayment Status"
        lore:
          - "&7Current: &f%status%"
          - "&7TXID: &f%txid%"
          - "&7Confirmations: &f%current_confirmations%/%confirmations%"
          - "&7Expires in: &f%time%"
        slot: 15

      back:
        enabled: true
        material: "ARROW"
        name: "&eBack"
        lore:
          - "&7Return to the store."
        slot: 18

      cancel:
        enabled: true
        material: "BARRIER"
        name: "&cCancel Payment"
        lore:
          - "&7Cancel this pending payment."
        slot: 22

      refresh:
        enabled: true
        material: "SUNFLOWER"
        name: "&bRefresh Status"
        lore:
          - "&7Refresh this payment screen."
        slot: 26

products:
  tip_jar:
    enabled: true
    display-name: "&aTip Jar"
    material: "EMERALD"
    custom-model-data: 0
    glow: true
    slot: 11
    wallet: "default"
    price-usd: 3.49
    base-sats: 15000
    permission-required: ""
    purchasable-once: false
    commands:
      - "lp user %player% parent add tipjar"
    lore:
      - "&7Buy the &aTip Jar &7rank with crypto."
      - "&7Normal store price: &c$4.99"
      - "&7Crypto store price: &a$3.49"
      - "&7Wallet: &f%wallet%"
      - "&7Approx base amount: &f%amount%"
      - "&7Click to generate a live-priced invoice."

  gold_dust:
    enabled: true
    display-name: "&bGold Dust"
    material: "GOLD_INGOT"
    custom-model-data: 0
    glow: true
    slot: 13
    wallet: "default"
    price-usd: 6.99
    base-sats: 27000
    permission-required: ""
    purchasable-once: false
    commands:
      - "lp user %player% parent add golddust"
    lore:
      - "&7Buy the &bGold Dust &7rank with crypto."
      - "&7Normal store price: &c$9.99"
      - "&7Crypto store price: &a$6.99"
      - "&7Wallet: &f%wallet%"
      - "&7Approx base amount: &f%amount%"
      - "&7Click to generate a live-priced invoice."

  dirt_rich:
    enabled: true
    display-name: "&6Dirt Rich"
    material: "DIAMOND"
    custom-model-data: 0
    glow: false
    slot: 15
    wallet: "default"
    price-usd: 13.99
    base-sats: 9750
    permission-required: ""
    purchasable-once: false
    commands:
      - "lp user %player% parent add dirtrich"
    lore:
      - "&7Buy the &6Dirt Rich &7rank with crypto."
      - "&7Normal store price: &c$19.99"
      - "&7Crypto store price: &a$13.99"
      - "&7Wallet: &f%wallet%"
      - "&7Approx base amount: &f%amount%"
      - "&7Click to generate a live-priced invoice."
