/**
 * @fileoverview Blockfrost API schemas and transformation utilities
 * Internal module for Blockfrost provider implementation
 */
import { Effect, Schema } from "effect";
import * as CoreAssets from "../../../Assets.js";
import type { EvalRedeemer } from "../../EvalRedeemer.js";
import type * as Provider from "../Provider.js";
import { ProviderError } from "../Provider.js";
/**
 * Blockfrost protocol parameters response schema
 */
export declare const BlockfrostProtocolParameters: Schema.Struct<{
    min_fee_a: typeof Schema.Number;
    min_fee_b: typeof Schema.Number;
    pool_deposit: typeof Schema.String;
    key_deposit: typeof Schema.String;
    min_utxo: Schema.optional<typeof Schema.String>;
    max_tx_size: typeof Schema.Number;
    max_val_size: Schema.optional<typeof Schema.String>;
    utxo_cost_per_word: Schema.optional<typeof Schema.String>;
    cost_models: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.Unknown>>;
    price_mem: Schema.optional<typeof Schema.Number>;
    price_step: Schema.optional<typeof Schema.Number>;
    max_tx_ex_mem: Schema.optional<typeof Schema.String>;
    max_tx_ex_steps: Schema.optional<typeof Schema.String>;
    max_block_ex_mem: Schema.optional<typeof Schema.String>;
    max_block_ex_steps: Schema.optional<typeof Schema.String>;
    max_block_size: typeof Schema.Number;
    collateral_percent: Schema.optional<typeof Schema.Number>;
    max_collateral_inputs: Schema.optional<typeof Schema.Number>;
    coins_per_utxo_size: Schema.optional<typeof Schema.String>;
    min_fee_ref_script_cost_per_byte: Schema.optional<typeof Schema.Number>;
    drep_deposit: Schema.optional<typeof Schema.String>;
    gov_action_deposit: Schema.optional<typeof Schema.String>;
}>;
export type BlockfrostProtocolParameters = Schema.Schema.Type<typeof BlockfrostProtocolParameters>;
/**
 * Blockfrost UTxO amount schema (for multi-asset support)
 */
export declare const BlockfrostAmount: Schema.Struct<{
    unit: typeof Schema.String;
    quantity: typeof Schema.String;
}>;
export type BlockfrostAmount = Schema.Schema.Type<typeof BlockfrostAmount>;
/**
 * Blockfrost UTxO response schema
 */
export declare const BlockfrostUTxO: Schema.Struct<{
    address: typeof Schema.String;
    tx_hash: typeof Schema.String;
    tx_index: typeof Schema.Number;
    output_index: typeof Schema.Number;
    amount: Schema.Array$<Schema.Struct<{
        unit: typeof Schema.String;
        quantity: typeof Schema.String;
    }>>;
    block: typeof Schema.String;
    data_hash: Schema.NullOr<typeof Schema.String>;
    inline_datum: Schema.NullOr<typeof Schema.String>;
    reference_script_hash: Schema.NullOr<typeof Schema.String>;
}>;
export type BlockfrostUTxO = Schema.Schema.Type<typeof BlockfrostUTxO>;
/**
 * Blockfrost delegation/account response schema
 * From /accounts/{stake_address} endpoint
 */
export declare const BlockfrostDelegation: Schema.Struct<{
    stake_address: typeof Schema.String;
    active: typeof Schema.Boolean;
    active_epoch: Schema.NullOr<typeof Schema.Number>;
    pool_id: Schema.NullOr<typeof Schema.String>;
    controlled_amount: typeof Schema.String;
    rewards_sum: typeof Schema.String;
    withdrawals_sum: typeof Schema.String;
    reserves_sum: typeof Schema.String;
    treasury_sum: typeof Schema.String;
    withdrawable_amount: typeof Schema.String;
    drep_id: Schema.NullOr<typeof Schema.String>;
}>;
export type BlockfrostDelegation = Schema.Schema.Type<typeof BlockfrostDelegation>;
/**
 * Blockfrost asset address response schema (from /assets/{unit}/addresses endpoint)
 */
export declare const BlockfrostAssetAddress: Schema.Struct<{
    address: typeof Schema.String;
    quantity: typeof Schema.String;
}>;
export type BlockfrostAssetAddress = Schema.Schema.Type<typeof BlockfrostAssetAddress>;
/**
 * Blockfrost transaction UTxO output schema (from /txs/{hash}/utxos endpoint)
 * Different from regular UTxO - uses output_index instead of tx_index
 */
export declare const BlockfrostTxUtxoOutput: Schema.Struct<{
    address: typeof Schema.String;
    amount: Schema.Array$<Schema.Struct<{
        unit: typeof Schema.String;
        quantity: typeof Schema.String;
    }>>;
    output_index: typeof Schema.Number;
    data_hash: Schema.NullOr<typeof Schema.String>;
    inline_datum: Schema.NullOr<typeof Schema.String>;
    reference_script_hash: Schema.NullOr<typeof Schema.String>;
    collateral: typeof Schema.Boolean;
    consumed_by_tx: Schema.NullOr<typeof Schema.String>;
}>;
export type BlockfrostTxUtxoOutput = Schema.Schema.Type<typeof BlockfrostTxUtxoOutput>;
/**
 * Blockfrost transaction UTxOs response schema (from /txs/{hash}/utxos endpoint)
 */
export declare const BlockfrostTxUtxos: Schema.Struct<{
    hash: typeof Schema.String;
    inputs: Schema.Array$<typeof Schema.Unknown>;
    outputs: Schema.Array$<Schema.Struct<{
        address: typeof Schema.String;
        amount: Schema.Array$<Schema.Struct<{
            unit: typeof Schema.String;
            quantity: typeof Schema.String;
        }>>;
        output_index: typeof Schema.Number;
        data_hash: Schema.NullOr<typeof Schema.String>;
        inline_datum: Schema.NullOr<typeof Schema.String>;
        reference_script_hash: Schema.NullOr<typeof Schema.String>;
        collateral: typeof Schema.Boolean;
        consumed_by_tx: Schema.NullOr<typeof Schema.String>;
    }>>;
}>;
export type BlockfrostTxUtxos = Schema.Schema.Type<typeof BlockfrostTxUtxos>;
/**
 * Blockfrost transaction submit response schema
 */
export declare const BlockfrostSubmitResponse: typeof Schema.String;
export type BlockfrostSubmitResponse = Schema.Schema.Type<typeof BlockfrostSubmitResponse>;
/**
 * Blockfrost datum response schema
 */
export declare const BlockfrostDatum: Schema.Struct<{
    json_value: Schema.optional<typeof Schema.Unknown>;
    cbor: typeof Schema.String;
}>;
export type BlockfrostDatum = Schema.Schema.Type<typeof BlockfrostDatum>;
/**
 * Schema for JSONWSP-wrapped Ogmios evaluation response
 * Used by /utils/txs/evaluate/utxos endpoint
 * Can contain either EvaluationResult (success) or EvaluationFailure (error)
 */
export declare const JsonwspOgmiosEvaluationResponse: Schema.Struct<{
    type: Schema.optional<typeof Schema.String>;
    version: Schema.optional<typeof Schema.String>;
    servicename: Schema.optional<typeof Schema.String>;
    methodname: Schema.optional<typeof Schema.String>;
    result: Schema.optional<Schema.Struct<{
        EvaluationResult: Schema.optional<Schema.Record$<typeof Schema.String, Schema.Struct<{
            memory: typeof Schema.Number;
            steps: typeof Schema.Number;
        }>>>;
        EvaluationFailure: Schema.optional<typeof Schema.Unknown>;
    }>>;
    fault: Schema.optional<Schema.Struct<{
        code: Schema.optional<typeof Schema.String>;
        string: Schema.optional<typeof Schema.String>;
    }>>;
    reflection: Schema.optional<typeof Schema.Unknown>;
}>;
export type JsonwspOgmiosEvaluationResponse = Schema.Schema.Type<typeof JsonwspOgmiosEvaluationResponse>;
/**
 * Transform Blockfrost protocol parameters to Evolution SDK format
 */
export declare const transformProtocolParameters: (blockfrostParams: BlockfrostProtocolParameters) => Provider.ProtocolParameters;
/**
 * Transform Blockfrost amounts to Core Assets
 */
export declare const transformAmounts: (amounts: ReadonlyArray<BlockfrostAmount>) => CoreAssets.Assets;
/**
 * Transform Blockfrost delegation to delegation info
 */
export declare const transformDelegation: (blockfrostDelegation: BlockfrostDelegation) => Provider.Delegation;
/**
 * Transform JSONWSP-wrapped Ogmios evaluation response to Evolution SDK format
 * Used by /utils/txs/evaluate/utxos endpoint
 * Format: { result: { EvaluationResult: { "spend:0": { "memory": 1100, "steps": 160100 }, ... } } }
 */
export declare const transformJsonwspOgmiosEvaluationResult: (jsonwspResponse: JsonwspOgmiosEvaluationResponse) => Effect.Effect<Array<EvalRedeemer>, ProviderError>;
//# sourceMappingURL=Blockfrost.d.ts.map