INDEX idx_bss_pricing_outbox_dl_status_deadline
  ON bss_pricing_outbox_dead_letters
  DDL CREATE INDEX idx_bss_pricing_outbox_dl_status_deadline ON bss_pricing_outbox_dead_letters (status, deadline)
INDEX idx_bss_pricing_outbox_dl_status_failed
  ON bss_pricing_outbox_dead_letters
  DDL CREATE INDEX idx_bss_pricing_outbox_dl_status_failed ON bss_pricing_outbox_dead_letters (status, failed_at)
INDEX idx_bss_pricing_outbox_incoming_body_id
  ON bss_pricing_outbox_incoming
  DDL CREATE INDEX idx_bss_pricing_outbox_incoming_body_id ON bss_pricing_outbox_incoming (body_id)
INDEX idx_bss_pricing_outbox_incoming_partition
  ON bss_pricing_outbox_incoming
  DDL CREATE INDEX idx_bss_pricing_outbox_incoming_partition ON bss_pricing_outbox_incoming (partition_id, id)
INDEX idx_bss_pricing_outbox_outgoing_body_id
  ON bss_pricing_outbox_outgoing
  DDL CREATE INDEX idx_bss_pricing_outbox_outgoing_body_id ON bss_pricing_outbox_outgoing (body_id)
INDEX idx_bss_pricing_outbox_outgoing_partition_seq
  ON bss_pricing_outbox_outgoing
  DDL CREATE UNIQUE INDEX idx_bss_pricing_outbox_outgoing_partition_seq ON bss_pricing_outbox_outgoing (partition_id, seq)
INDEX idx_bss_pricing_outbox_trace_key
  ON bss_pricing_outbox_trace
  DDL CREATE INDEX idx_bss_pricing_outbox_trace_key ON bss_pricing_outbox_trace (trace)
INDEX idx_bss_pricing_outbox_trace_mail
  ON bss_pricing_outbox_trace
  DDL CREATE INDEX idx_bss_pricing_outbox_trace_mail ON bss_pricing_outbox_trace (owner_instance)
INDEX idx_bss_pricing_outbox_trace_retrying
  ON bss_pricing_outbox_trace
  DDL CREATE INDEX idx_bss_pricing_outbox_trace_retrying ON bss_pricing_outbox_trace (owner_instance)
INDEX idx_pricing_audit_actor
  ON pricing_audit
  DDL CREATE INDEX idx_pricing_audit_actor ON pricing_audit (tenant_id, actor_ref, written_at)
INDEX idx_pricing_audit_subject
  ON pricing_audit
  DDL CREATE INDEX idx_pricing_audit_subject ON pricing_audit (tenant_id, subject_kind, subject_id, written_at)
INDEX idx_pricing_audit_tenant_time
  ON pricing_audit
  DDL CREATE INDEX idx_pricing_audit_tenant_time ON pricing_audit (tenant_id, written_at)
INDEX idx_pricing_idempotency_expires
  ON pricing_idempotency
  DDL CREATE INDEX idx_pricing_idempotency_expires ON pricing_idempotency (tenant_id, expires_at)
INDEX ix_pricing_approval_unit_queue
  ON pricing_approval_unit
  DDL CREATE INDEX ix_pricing_approval_unit_queue ON pricing_approval_unit (tenant_id, state, kind, submitted_at)
INDEX pricing_acceptance_business
  ON pricing_acceptance
  DDL CREATE UNIQUE INDEX pricing_acceptance_business ON pricing_acceptance (tenant_id, order_id, order_version, line_id)
INDEX pricing_commercial_command_acceptance
  ON pricing_commercial_command
  DDL CREATE INDEX pricing_commercial_command_acceptance ON pricing_commercial_command (tenant_id, acceptance_id)
INDEX pricing_commercial_command_hold
  ON pricing_commercial_command
  DDL CREATE INDEX pricing_commercial_command_hold ON pricing_commercial_command (tenant_id, hold_id)
INDEX pricing_commercial_command_scope
  ON pricing_commercial_command
  DDL CREATE UNIQUE INDEX pricing_commercial_command_scope ON pricing_commercial_command (tenant_id, caller_tenant_id, caller_id, operation, idempotency_key)
INDEX pricing_hold_acceptance
  ON pricing_hold
  DDL CREATE UNIQUE INDEX pricing_hold_acceptance ON pricing_hold (tenant_id, acceptance_id)
INDEX pricing_plan_code
  ON pricing_plan
  DDL CREATE UNIQUE INDEX pricing_plan_code ON pricing_plan (tenant_id, code)
INDEX pricing_plan_revision_open
  ON pricing_plan_revision
  DDL CREATE UNIQUE INDEX pricing_plan_revision_open ON pricing_plan_revision (plan_id) WHERE state IN ('draft','pending')
INDEX pricing_plan_revision_published
  ON pricing_plan_revision
  DDL CREATE UNIQUE INDEX pricing_plan_revision_published ON pricing_plan_revision (plan_id) WHERE state = 'published'
INDEX pricing_plan_revision_scheduled
  ON pricing_plan_revision
  DDL CREATE UNIQUE INDEX pricing_plan_revision_scheduled ON pricing_plan_revision (plan_id) WHERE state = 'scheduled'
INDEX pricing_price_approved_start
  ON pricing_price
  DDL CREATE UNIQUE INDEX pricing_price_approved_start ON pricing_price (price_book_entry_id, coalesce(dim_value, ''), effective_from) WHERE state = 'approved' AND change_kind = 'set'
INDEX pricing_price_book_entry_key
  ON pricing_price_book_entry
  DDL CREATE UNIQUE INDEX pricing_price_book_entry_key ON pricing_price_book_entry (book_id, sku_id, charge_kind, coalesce(period, ''), model, coalesce(usage_policy_digest, ''))
INDEX pricing_price_chain
  ON pricing_price
  DDL CREATE INDEX pricing_price_chain ON pricing_price (price_book_entry_id, dim_value, effective_from) WHERE state = 'approved'
INDEX pricing_reference_op_due
  ON pricing_reference_op
  DDL CREATE INDEX pricing_reference_op_due ON pricing_reference_op (state, next_attempt_at) WHERE state <> 'done'
TABLE bss_pricing_outbox_body
  COLUMN created_at TEXT NOT NULL DEFAULT datetime('now') PK 0
  COLUMN id INTEGER NULL DEFAULT - PK 1
  COLUMN payload BLOB NOT NULL DEFAULT - PK 0
  COLUMN payload_type TEXT NOT NULL DEFAULT - PK 0
  COLUMN trace TEXT NULL DEFAULT - PK 0
TABLE bss_pricing_outbox_dead_letters
  COLUMN attempts INTEGER NOT NULL DEFAULT - PK 0
  COLUMN completed_at TEXT NULL DEFAULT - PK 0
  COLUMN created_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN deadline TEXT NULL DEFAULT - PK 0
  COLUMN failed_at TEXT NOT NULL DEFAULT datetime('now') PK 0
  COLUMN id INTEGER NULL DEFAULT - PK 1
  COLUMN last_error TEXT NULL DEFAULT - PK 0
  COLUMN partition_id INTEGER NOT NULL DEFAULT - PK 0
  COLUMN payload BLOB NOT NULL DEFAULT - PK 0
  COLUMN payload_type TEXT NOT NULL DEFAULT - PK 0
  COLUMN seq INTEGER NOT NULL DEFAULT - PK 0
  COLUMN status TEXT NOT NULL DEFAULT 'pending' PK 0
  COLUMN trace TEXT NULL DEFAULT - PK 0
  FK partition_id -> bss_pricing_outbox_partitions.id
TABLE bss_pricing_outbox_incoming
  COLUMN body_id INTEGER NOT NULL DEFAULT - PK 0
  COLUMN id INTEGER NULL DEFAULT - PK 1
  COLUMN partition_id INTEGER NOT NULL DEFAULT - PK 0
  FK body_id -> bss_pricing_outbox_body.id
  FK partition_id -> bss_pricing_outbox_partitions.id
TABLE bss_pricing_outbox_outgoing
  COLUMN body_id INTEGER NOT NULL DEFAULT - PK 0
  COLUMN id INTEGER NULL DEFAULT - PK 1
  COLUMN partition_id INTEGER NOT NULL DEFAULT - PK 0
  COLUMN seq INTEGER NOT NULL DEFAULT - PK 0
  COLUMN sequenced_at TEXT NOT NULL DEFAULT datetime('now') PK 0
  FK body_id -> bss_pricing_outbox_body.id
  FK partition_id -> bss_pricing_outbox_partitions.id
TABLE bss_pricing_outbox_partitions
  COLUMN id INTEGER NULL DEFAULT - PK 1
  COLUMN partition INTEGER NOT NULL DEFAULT - PK 0
  COLUMN queue TEXT NOT NULL DEFAULT - PK 0
  COLUMN sequence INTEGER NOT NULL DEFAULT 0 PK 0
TABLE bss_pricing_outbox_processor
  COLUMN attempts INTEGER NOT NULL DEFAULT 0 PK 0
  COLUMN last_error TEXT NULL DEFAULT - PK 0
  COLUMN locked_by TEXT NULL DEFAULT - PK 0
  COLUMN locked_until TEXT NULL DEFAULT - PK 0
  COLUMN partition_id INTEGER NULL DEFAULT - PK 1
  COLUMN processed_seq INTEGER NOT NULL DEFAULT 0 PK 0
  FK partition_id -> bss_pricing_outbox_partitions.id
TABLE bss_pricing_outbox_trace
  COLUMN attempts INTEGER NOT NULL DEFAULT 0 PK 0
  COLUMN completed_at TEXT NULL DEFAULT - PK 0
  COLUMN created_at TEXT NOT NULL DEFAULT datetime('now') PK 0
  COLUMN entities INTEGER NOT NULL DEFAULT - PK 0
  COLUMN failures INTEGER NOT NULL DEFAULT 0 PK 0
  COLUMN id INTEGER NULL DEFAULT - PK 1
  COLUMN last_error TEXT NULL DEFAULT - PK 0
  COLUMN notified_at TEXT NULL DEFAULT - PK 0
  COLUMN owner_instance TEXT NOT NULL DEFAULT - PK 0
  COLUMN pending INTEGER NOT NULL DEFAULT - PK 0
  COLUMN queue TEXT NOT NULL DEFAULT - PK 0
  COLUMN retrying_since TEXT NULL DEFAULT - PK 0
  COLUMN trace TEXT NOT NULL DEFAULT - PK 0
TABLE bss_pricing_outbox_vacuum_counter
  COLUMN counter INTEGER NOT NULL DEFAULT 0 PK 0
  COLUMN partition_id INTEGER NULL DEFAULT - PK 1
  FK partition_id -> bss_pricing_outbox_partitions.id
TABLE coord_leases
  COLUMN attempts INTEGER NOT NULL DEFAULT 0 PK 0
  COLUMN key TEXT NULL DEFAULT - PK 1
  COLUMN locked_by TEXT NULL DEFAULT - PK 0
  COLUMN locked_until TEXT NOT NULL DEFAULT '1970-01-01 00:00:00+00:00' PK 0
TABLE event_broker_producer_registrations
  COLUMN client_agent TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_at TEXT NOT NULL DEFAULT datetime('now') PK 0
  COLUMN generation INTEGER NOT NULL DEFAULT - PK 0
  COLUMN mode TEXT NOT NULL DEFAULT - PK 0
  COLUMN producer_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN registration_key TEXT NULL DEFAULT - PK 1
  COLUMN updated_at TEXT NOT NULL DEFAULT datetime('now') PK 0
TABLE pricing_acceptance
  COLUMN accepted_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_by TEXT NOT NULL DEFAULT - PK 0
  COLUMN hold_until TEXT NOT NULL DEFAULT - PK 0
  COLUMN id TEXT NOT NULL DEFAULT - PK 2
  COLUMN line_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN order_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN order_version TEXT NOT NULL DEFAULT - PK 0
  COLUMN receipt_json TEXT NOT NULL DEFAULT - PK 0
  COLUMN request_digest TEXT NOT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 1
  COLUMN terms_digest TEXT NOT NULL DEFAULT - PK 0
  CONSTRAINT pricing_acceptance_pkey PRIMARY KEY (tenant_id, id)
  CONSTRAINT pricing_acceptance_request_digest_check CHECK (length(request_digest) = 64 AND request_digest NOT GLOB '*[^0-9a-f]*')
  CONSTRAINT pricing_acceptance_terms_digest_check CHECK (length(terms_digest) = 64 AND terms_digest NOT GLOB '*[^0-9a-f]*')
  CONSTRAINT pricing_acceptance_version CHECK (length(order_version) BETWEEN 1 AND 20 AND substr(order_version,1,1) <> '0' AND (length(order_version) < 20 OR order_version <= '18446744073709551615') AND order_version NOT GLOB '*[^0-9]*')
  CONSTRAINT pricing_acceptance_window CHECK (hold_until > accepted_at)
TABLE pricing_approval_decision
  COLUMN actor TEXT NOT NULL DEFAULT - PK 2
  COLUMN at TEXT NOT NULL DEFAULT - PK 0
  COLUMN decision TEXT NOT NULL DEFAULT - PK 0
  COLUMN generation INTEGER NOT NULL DEFAULT - PK 3
  COLUMN note TEXT NULL DEFAULT - PK 0
  COLUMN stale INTEGER NOT NULL DEFAULT 0 PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN unit_id TEXT NOT NULL DEFAULT - PK 1
  FK unit_id -> pricing_approval_unit.id
TABLE pricing_approval_policy
  COLUMN kind TEXT NOT NULL DEFAULT - PK 2
  COLUMN quorum INTEGER NOT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 1
TABLE pricing_approval_unit
  COLUMN common_effective_date TEXT NULL DEFAULT - PK 0
  COLUMN decided_at TEXT NULL DEFAULT - PK 0
  COLUMN decided_note TEXT NULL DEFAULT - PK 0
  COLUMN generation INTEGER NOT NULL DEFAULT 1 PK 0
  COLUMN id TEXT NULL DEFAULT - PK 1
  COLUMN kind TEXT NOT NULL DEFAULT - PK 0
  COLUMN quorum_required INTEGER NOT NULL DEFAULT - PK 0
  COLUMN ref_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN ref_type TEXT NOT NULL DEFAULT - PK 0
  COLUMN snapshot TEXT NOT NULL DEFAULT - PK 0
  COLUMN snapshot_hash TEXT NOT NULL DEFAULT - PK 0
  COLUMN state TEXT NOT NULL DEFAULT - PK 0
  COLUMN submit_note TEXT NULL DEFAULT - PK 0
  COLUMN submitted_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN submitted_by TEXT NOT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN version INTEGER NOT NULL DEFAULT 1 PK 0
TABLE pricing_approval_unit_item
  COLUMN after_json TEXT NOT NULL DEFAULT - PK 0
  COLUMN before_json TEXT NULL DEFAULT - PK 0
  COLUMN created_by TEXT NOT NULL DEFAULT - PK 0
  COLUMN item_id TEXT NOT NULL DEFAULT - PK 3
  COLUMN item_type TEXT NOT NULL DEFAULT - PK 2
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN unit_id TEXT NOT NULL DEFAULT - PK 1
  FK unit_id -> pricing_approval_unit.id
TABLE pricing_audit
  COLUMN action TEXT NOT NULL DEFAULT - PK 0
  COLUMN actor_ref TEXT NOT NULL DEFAULT - PK 0
  COLUMN attempted_key TEXT NULL DEFAULT - PK 0
  COLUMN audit_id TEXT NOT NULL DEFAULT - PK 1
  COLUMN ceremony_ref TEXT NULL DEFAULT - PK 0
  COLUMN chain_id TEXT NULL DEFAULT - PK 0
  COLUMN correlation_id TEXT NULL DEFAULT - PK 0
  COLUMN error_code TEXT NULL DEFAULT - PK 0
  COLUMN prev_hash BLOB NULL DEFAULT - PK 0
  COLUMN reason TEXT NULL DEFAULT - PK 0
  COLUMN row_hash BLOB NULL DEFAULT - PK 0
  COLUMN seal_state TEXT NOT NULL DEFAULT - PK 0
  COLUMN seq bigint NULL DEFAULT - PK 0
  COLUMN session_id TEXT NULL DEFAULT - PK 0
  COLUMN subject_id TEXT NULL DEFAULT - PK 0
  COLUMN subject_kind TEXT NOT NULL DEFAULT - PK 0
  COLUMN subject_revision bigint NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN written_at TEXT NOT NULL DEFAULT - PK 0
  CONSTRAINT chk_pricing_audit_seal_group CHECK ((seal_state = 'unsealed' AND chain_id IS NULL AND seq IS NULL AND prev_hash IS NULL AND row_hash IS NULL) OR (seal_state = 'sealed' AND chain_id IS NOT NULL AND seq IS NOT NULL AND row_hash IS NOT NULL))
  CONSTRAINT chk_pricing_audit_seal_state CHECK (seal_state IN ('unsealed', 'sealed'))
  CONSTRAINT chk_pricing_audit_seq CHECK (seq IS NULL OR seq >= 0)
  CONSTRAINT chk_pricing_audit_subject_ref CHECK (subject_id IS NOT NULL OR attempted_key IS NOT NULL OR session_id IS NOT NULL)
TABLE pricing_commercial_command
  COLUMN acceptance_id TEXT NULL DEFAULT - PK 0
  COLUMN caller_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN caller_tenant_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN hold_id TEXT NULL DEFAULT - PK 0
  COLUMN id TEXT NOT NULL DEFAULT - PK 2
  COLUMN idempotency_key TEXT NOT NULL DEFAULT - PK 0
  COLUMN operation TEXT NOT NULL DEFAULT - PK 0
  COLUMN receipt_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN receipt_kind TEXT NOT NULL DEFAULT - PK 0
  COLUMN request_digest TEXT NOT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 1
  CONSTRAINT pricing_commercial_command_acceptance_fk FOREIGN KEY (tenant_id, acceptance_id)
  CONSTRAINT pricing_commercial_command_hold_fk FOREIGN KEY (tenant_id, hold_id)
  CONSTRAINT pricing_commercial_command_key CHECK (length(idempotency_key) > 0)
  CONSTRAINT pricing_commercial_command_pkey PRIMARY KEY (tenant_id, id)
  CONSTRAINT pricing_commercial_command_request_digest_check CHECK (length(request_digest) = 64 AND request_digest NOT GLOB '*[^0-9a-f]*')
  CONSTRAINT pricing_commercial_command_target CHECK ((operation = 'check' AND receipt_kind = 'acceptance' AND acceptance_id IS NOT NULL AND receipt_id = acceptance_id AND hold_id IS NULL) OR (operation = 'hold' AND receipt_kind = 'hold' AND hold_id IS NOT NULL AND receipt_id = hold_id AND acceptance_id IS NULL))
  FK acceptance_id -> pricing_acceptance.id
  FK hold_id -> pricing_hold.id
  FK tenant_id -> pricing_acceptance.tenant_id
  FK tenant_id -> pricing_hold.tenant_id
TABLE pricing_dimension_key
  COLUMN key TEXT NOT NULL DEFAULT - PK 2
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 1
  COLUMN values TEXT NOT NULL DEFAULT - PK 0
  COLUMN version INTEGER NOT NULL DEFAULT 1 PK 0
TABLE pricing_hold
  COLUMN acceptance_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN activation_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_by TEXT NOT NULL DEFAULT - PK 0
  COLUMN id TEXT NOT NULL DEFAULT - PK 2
  COLUMN receipt_json TEXT NOT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 1
  COLUMN terms_digest TEXT NOT NULL DEFAULT - PK 0
  CONSTRAINT pricing_hold_acceptance_fk FOREIGN KEY (tenant_id, acceptance_id)
  CONSTRAINT pricing_hold_pkey PRIMARY KEY (tenant_id, id)
  CONSTRAINT pricing_hold_terms_digest_check CHECK (length(terms_digest) = 64 AND terms_digest NOT GLOB '*[^0-9a-f]*')
  FK acceptance_id -> pricing_acceptance.id
  FK tenant_id -> pricing_acceptance.tenant_id
TABLE pricing_idempotency
  COLUMN client_key TEXT NOT NULL DEFAULT - PK 3
  COLUMN endpoint TEXT NOT NULL DEFAULT - PK 2
  COLUMN entity_ref TEXT NULL DEFAULT - PK 0
  COLUMN expires_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN payload_hash BLOB NOT NULL DEFAULT - PK 0
  COLUMN response_body TEXT NULL DEFAULT - PK 0
  COLUMN response_status INTEGER NULL DEFAULT - PK 0
  COLUMN state TEXT NOT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 1
  CONSTRAINT chk_pricing_idempotency_response_group CHECK ((state = 'claimed' AND response_status IS NULL AND response_body IS NULL) OR (state = 'answered' AND response_status IS NOT NULL AND response_body IS NOT NULL))
  CONSTRAINT chk_pricing_idempotency_state CHECK (state IN ('claimed', 'answered'))
TABLE pricing_plan
  COLUMN code TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_by TEXT NOT NULL DEFAULT - PK 0
  COLUMN current_book_id TEXT NULL DEFAULT - PK 0
  COLUMN current_currency TEXT NULL DEFAULT - PK 0
  COLUMN id TEXT NULL DEFAULT - PK 1
  COLUMN last_activity_at TEXT NOT NULL DEFAULT '1970-01-01T00:00:00Z' PK 0
  COLUMN name TEXT NOT NULL DEFAULT - PK 0
  COLUMN published_rev INTEGER NULL DEFAULT - PK 0
  COLUMN published_revision_id TEXT NULL DEFAULT - PK 0
  COLUMN scheduled_from TEXT NULL DEFAULT - PK 0
  COLUMN scheduled_revision_id TEXT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN updated_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN version INTEGER NOT NULL DEFAULT 1 PK 0
  COLUMN work_revision_id TEXT NULL DEFAULT - PK 0
  COLUMN work_state TEXT NULL DEFAULT - PK 0
TABLE pricing_plan_item
  COLUMN created_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_by TEXT NOT NULL DEFAULT - PK 0
  COLUMN id TEXT NULL DEFAULT - PK 1
  COLUMN included_qty TEXT NULL DEFAULT - PK 0
  COLUMN price_book_entry_id TEXT NULL DEFAULT - PK 0
  COLUMN qty_min INTEGER NULL DEFAULT - PK 0
  COLUMN reference_state TEXT NOT NULL DEFAULT - PK 0
  COLUMN reservation_id TEXT NULL DEFAULT - PK 0
  COLUMN revision_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN sku_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN treatment TEXT NOT NULL DEFAULT - PK 0
  COLUMN updated_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN version INTEGER NOT NULL DEFAULT 1 PK 0
  CONSTRAINT chk_pricing_plan_item_entry CHECK (treatment = 'included' OR price_book_entry_id IS NOT NULL)
  CONSTRAINT chk_pricing_plan_item_included_qty CHECK (included_qty GLOB '[0-9]*' AND included_qty NOT GLOB '*[^0-9.]*' AND included_qty NOT GLOB '*.*.*' AND included_qty NOT GLOB '*.')
  CONSTRAINT chk_pricing_plan_item_qty_min CHECK (qty_min >= 0)
  CONSTRAINT chk_pricing_plan_item_reference_state CHECK (reference_state IN ('unreserved','confirmation_pending','confirmed','lost'))
  CONSTRAINT chk_pricing_plan_item_treatment CHECK (treatment IN ('paid','optional','included'))
  CONSTRAINT pricing_plan_item_sku UNIQUE (revision_id, sku_id)
  FK price_book_entry_id -> pricing_price_book_entry.id
  FK revision_id -> pricing_plan_revision.id
TABLE pricing_plan_revision
  COLUMN approved_by_unit_id TEXT NULL DEFAULT - PK 0
  COLUMN available_from TEXT NULL DEFAULT - PK 0
  COLUMN book_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_by TEXT NOT NULL DEFAULT - PK 0
  COLUMN id TEXT NULL DEFAULT - PK 1
  COLUMN pending_unit_id TEXT NULL DEFAULT - PK 0
  COLUMN plan_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN published_at TEXT NULL DEFAULT - PK 0
  COLUMN rev_no INTEGER NOT NULL DEFAULT - PK 0
  COLUMN state TEXT NOT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN updated_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN version INTEGER NOT NULL DEFAULT 1 PK 0
  CONSTRAINT chk_pricing_plan_revision_state CHECK (state IN ('draft','pending','scheduled','published','superseded'))
  CONSTRAINT pricing_plan_revision_no UNIQUE (plan_id, rev_no)
  FK approved_by_unit_id -> pricing_approval_unit.id
  FK book_id -> pricing_price_book.id
  FK pending_unit_id -> pricing_approval_unit.id
  FK plan_id -> pricing_plan.id
TABLE pricing_price
  COLUMN approved_at TEXT NULL DEFAULT - PK 0
  COLUMN approved_by_unit_id TEXT NULL DEFAULT - PK 0
  COLUMN cancelled_by_unit_id TEXT NULL DEFAULT - PK 0
  COLUMN change_kind TEXT NOT NULL DEFAULT 'set' PK 0
  COLUMN closed_explicitly INTEGER NOT NULL DEFAULT 0 PK 0
  COLUMN created_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_by TEXT NOT NULL DEFAULT - PK 0
  COLUMN currency TEXT NOT NULL DEFAULT - PK 0
  COLUMN currency_scale INTEGER NOT NULL DEFAULT - PK 0
  COLUMN dim_value TEXT NULL DEFAULT - PK 0
  COLUMN effective_from TEXT NOT NULL DEFAULT - PK 0
  COLUMN effective_to TEXT NULL DEFAULT - PK 0
  COLUMN eligibility TEXT NOT NULL DEFAULT - PK 0
  COLUMN id TEXT NULL DEFAULT - PK 1
  COLUMN keep_for_bound INTEGER NOT NULL DEFAULT 0 PK 0
  COLUMN min_fee TEXT NULL DEFAULT - PK 0
  COLUMN note TEXT NULL DEFAULT - PK 0
  COLUMN paired_price_id TEXT NULL DEFAULT - PK 0
  COLUMN pending_unit_id TEXT NULL DEFAULT - PK 0
  COLUMN price_book_entry_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN price_json TEXT NOT NULL DEFAULT - PK 0
  COLUMN return_of_price_id TEXT NULL DEFAULT - PK 0
  COLUMN state TEXT NOT NULL DEFAULT - PK 0
  COLUMN target_price_id TEXT NULL DEFAULT - PK 0
  COLUMN temporary_until TEXT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN updated_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN version INTEGER NOT NULL DEFAULT 1 PK 0
  COLUMN version_no INTEGER NOT NULL DEFAULT - PK 0
  FK approved_by_unit_id -> pricing_approval_unit.id
  FK cancelled_by_unit_id -> pricing_approval_unit.id
  FK paired_price_id -> pricing_price.id
  FK pending_unit_id -> pricing_approval_unit.id
  FK price_book_entry_id -> pricing_price_book_entry.id
  FK return_of_price_id -> pricing_price.id
  FK target_price_id -> pricing_price.id
TABLE pricing_price_book
  COLUMN archived_at TEXT NULL DEFAULT - PK 0
  COLUMN archived_by TEXT NULL DEFAULT - PK 0
  COLUMN code TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN currency char(3) NOT NULL DEFAULT - PK 0
  COLUMN description TEXT NULL DEFAULT - PK 0
  COLUMN id TEXT NULL DEFAULT - PK 1
  COLUMN name TEXT NOT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN updated_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN valid_from TEXT NULL DEFAULT - PK 0
  COLUMN valid_until TEXT NULL DEFAULT - PK 0
  COLUMN version INTEGER NOT NULL DEFAULT 1 PK 0
TABLE pricing_price_book_entry
  COLUMN book_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN charge_kind TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN dimension_key TEXT NULL DEFAULT - PK 0
  COLUMN id TEXT NULL DEFAULT - PK 1
  COLUMN invoice_line_override TEXT NULL DEFAULT - PK 0
  COLUMN model TEXT NOT NULL DEFAULT 'flat' PK 0
  COLUMN period TEXT NULL DEFAULT - PK 0
  COLUMN reference_state TEXT NOT NULL DEFAULT - PK 0
  COLUMN reservation_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN sku_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN updated_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN usage_policy_digest TEXT NULL DEFAULT - PK 0
  COLUMN usage_policy_id TEXT NULL DEFAULT - PK 0
  COLUMN usage_policy_version INTEGER NULL DEFAULT - PK 0
  COLUMN usage_sku_version INTEGER NULL DEFAULT - PK 0
  COLUMN version INTEGER NOT NULL DEFAULT 1 PK 0
  CONSTRAINT pricing_entry_policy_complete CHECK ((usage_policy_id IS NULL AND usage_policy_version IS NULL AND usage_policy_digest IS NULL) OR (usage_policy_id IS NOT NULL AND usage_policy_version IS NOT NULL AND usage_policy_digest IS NOT NULL AND charge_kind = 'usage'))
  FK book_id -> pricing_price_book.id
  FK dimension_key -> pricing_dimension_key.key
  FK tenant_id -> pricing_dimension_key.tenant_id
  FK tenant_id -> pricing_usage_rating_policy.tenant_id
  FK usage_policy_digest -> pricing_usage_rating_policy.digest
  FK usage_policy_id -> pricing_usage_rating_policy.policy_id
  FK usage_policy_version -> pricing_usage_rating_policy.version
TABLE pricing_reference_op
  COLUMN attempts INTEGER NOT NULL DEFAULT 0 PK 0
  COLUMN created_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_by TEXT NOT NULL DEFAULT - PK 0
  COLUMN idempotency_key TEXT NULL DEFAULT - PK 0
  COLUMN kind TEXT NOT NULL DEFAULT - PK 0
  COLUMN last_error TEXT NULL DEFAULT - PK 0
  COLUMN next_attempt_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN op_id TEXT NULL DEFAULT - PK 1
  COLUMN outcome TEXT NULL DEFAULT - PK 0
  COLUMN ref_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN ref_kind TEXT NOT NULL DEFAULT - PK 0
  COLUMN reservation_id TEXT NULL DEFAULT - PK 0
  COLUMN sku_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN state TEXT NOT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 0
  COLUMN updated_at TEXT NOT NULL DEFAULT - PK 0
TABLE pricing_settings
  COLUMN created_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN currencies TEXT NOT NULL DEFAULT '[]' PK 0
  COLUMN default_gl TEXT NULL DEFAULT - PK 0
  COLUMN default_tax_category TEXT NULL DEFAULT - PK 0
  COLUMN default_timing TEXT NOT NULL DEFAULT - PK 0
  COLUMN invoice_line_templates TEXT NOT NULL DEFAULT - PK 0
  COLUMN tenant_id TEXT NULL DEFAULT - PK 1
  COLUMN updated_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN updated_by TEXT NULL DEFAULT - PK 0
  COLUMN version INTEGER NOT NULL DEFAULT 1 PK 0
TABLE pricing_usage_rating_policy
  COLUMN content TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_at TEXT NOT NULL DEFAULT - PK 0
  COLUMN created_by TEXT NOT NULL DEFAULT - PK 0
  COLUMN digest TEXT NOT NULL DEFAULT - PK 0
  COLUMN policy_id TEXT NOT NULL DEFAULT - PK 2
  COLUMN tenant_id TEXT NOT NULL DEFAULT - PK 1
  COLUMN version INTEGER NOT NULL DEFAULT - PK 3
TRIGGER pricing_entry_sku_version_insert
  ON pricing_price_book_entry
  DDL CREATE TRIGGER pricing_entry_sku_version_insert BEFORE INSERT ON pricing_price_book_entry WHEN NEW.usage_sku_version IS NOT NULL AND (NEW.usage_policy_id IS NULL OR NEW.usage_sku_version < 1) BEGIN SELECT RAISE(ABORT, 'pricing_entry_sku_version'); END
TRIGGER pricing_entry_sku_version_update
  ON pricing_price_book_entry
  DDL CREATE TRIGGER pricing_entry_sku_version_update BEFORE UPDATE ON pricing_price_book_entry WHEN NEW.usage_sku_version IS NOT NULL AND (NEW.usage_policy_id IS NULL OR NEW.usage_sku_version < 1) BEGIN SELECT RAISE(ABORT, 'pricing_entry_sku_version'); END
TRIGGER pricing_plan_scheduled_pair_insert
  ON pricing_plan
  DDL CREATE TRIGGER pricing_plan_scheduled_pair_insert BEFORE INSERT ON pricing_plan WHEN (NEW.scheduled_revision_id IS NULL) != (NEW.scheduled_from IS NULL) BEGIN SELECT RAISE(ABORT, 'pricing_plan_scheduled_pair'); END
TRIGGER pricing_plan_scheduled_pair_update
  ON pricing_plan
  DDL CREATE TRIGGER pricing_plan_scheduled_pair_update BEFORE UPDATE ON pricing_plan WHEN (NEW.scheduled_revision_id IS NULL) != (NEW.scheduled_from IS NULL) BEGIN SELECT RAISE(ABORT, 'pricing_plan_scheduled_pair'); END
TRIGGER pricing_plan_work_pair_insert
  ON pricing_plan
  DDL CREATE TRIGGER pricing_plan_work_pair_insert BEFORE INSERT ON pricing_plan WHEN (NEW.work_revision_id IS NULL) != (NEW.work_state IS NULL) BEGIN SELECT RAISE(ABORT, 'pricing_plan_work_pair'); END
TRIGGER pricing_plan_work_pair_update
  ON pricing_plan
  DDL CREATE TRIGGER pricing_plan_work_pair_update BEFORE UPDATE ON pricing_plan WHEN (NEW.work_revision_id IS NULL) != (NEW.work_state IS NULL) BEGIN SELECT RAISE(ABORT, 'pricing_plan_work_pair'); END
TRIGGER pricing_plan_work_state_insert
  ON pricing_plan
  DDL CREATE TRIGGER pricing_plan_work_state_insert BEFORE INSERT ON pricing_plan WHEN NEW.work_state IS NOT NULL AND NEW.work_state NOT IN ('draft','pending') BEGIN SELECT RAISE(ABORT, 'pricing_plan_work_state'); END
TRIGGER pricing_plan_work_state_update
  ON pricing_plan
  DDL CREATE TRIGGER pricing_plan_work_state_update BEFORE UPDATE ON pricing_plan WHEN NEW.work_state IS NOT NULL AND NEW.work_state NOT IN ('draft','pending') BEGIN SELECT RAISE(ABORT, 'pricing_plan_work_state'); END
TRIGGER pricing_usage_policy_no_delete
  ON pricing_usage_rating_policy
  DDL CREATE TRIGGER pricing_usage_policy_no_delete BEFORE DELETE ON pricing_usage_rating_policy BEGIN SELECT RAISE(ABORT, 'usage rating policies are append-only'); END
TRIGGER pricing_usage_policy_no_update
  ON pricing_usage_rating_policy
  DDL CREATE TRIGGER pricing_usage_policy_no_update BEFORE UPDATE ON pricing_usage_rating_policy BEGIN SELECT RAISE(ABORT, 'usage rating policies are append-only'); END
TRIGGER trg_pricing_audit_no_delete
  ON pricing_audit
  DDL CREATE TRIGGER trg_pricing_audit_no_delete BEFORE DELETE ON pricing_audit FOR EACH ROW BEGIN SELECT RAISE(ABORT, 'pricing_audit is append-only: DELETE is not permitted'); END
TRIGGER trg_pricing_audit_no_update
  ON pricing_audit
  DDL CREATE TRIGGER trg_pricing_audit_no_update BEFORE UPDATE ON pricing_audit FOR EACH ROW WHEN NOT (OLD.seal_state IS 'unsealed' AND NEW.seal_state IS 'sealed' AND NEW.chain_id IS NOT NULL AND NEW.seq IS NOT NULL AND NEW.row_hash IS NOT NULL) BEGIN SELECT RAISE(ABORT, 'pricing_audit is append-only: UPDATE is not permitted'); END
TRIGGER trg_pricing_audit_seal_unchanged
  ON pricing_audit
  DDL CREATE TRIGGER trg_pricing_audit_seal_unchanged BEFORE UPDATE ON pricing_audit FOR EACH ROW WHEN (OLD.seal_state IS 'unsealed' AND NEW.seal_state IS 'sealed' AND NEW.chain_id IS NOT NULL AND NEW.seq IS NOT NULL AND NEW.row_hash IS NOT NULL) AND NOT (NEW.audit_id IS OLD.audit_id AND NEW.tenant_id IS OLD.tenant_id AND NEW.actor_ref IS OLD.actor_ref AND NEW.action IS OLD.action AND NEW.subject_kind IS OLD.subject_kind AND NEW.subject_id IS OLD.subject_id AND NEW.subject_revision IS OLD.subject_revision AND NEW.error_code IS OLD.error_code AND NEW.attempted_key IS OLD.attempted_key AND NEW.reason IS OLD.reason AND NEW.correlation_id IS OLD.correlation_id AND NEW.written_at IS OLD.written_at AND NEW.session_id IS OLD.session_id AND NEW.ceremony_ref IS OLD.ceremony_ref) BEGIN SELECT RAISE(ABORT, 'pricing_audit is append-only: UPDATE is not permitted'); END
