import { SlotIndex } from '../block/slot';
import { Bech32Address, TokenId } from '../block';
import { HexEncodedString } from '../utils/hex-encoding';
/**
 * Common query parameters for output requests.
 */
export interface CommonOutputQueryParameters {
    pageSize?: number;
    cursor?: string;
    createdBefore?: SlotIndex;
    createdAfter?: SlotIndex;
}
/**
 * Query parameters for output requests.
 */
export interface OutputQueryParameters extends CommonOutputQueryParameters {
    hasNativeToken?: boolean;
    nativeToken?: TokenId;
    unlockableByAddress?: Bech32Address;
}
/**
 * Query parameters for basic output requests.
 */
export interface BasicOutputQueryParameters extends CommonOutputQueryParameters {
    hasNativeToken?: boolean;
    nativeToken?: TokenId;
    unlockableByAddress?: Bech32Address;
    address?: Bech32Address;
    hasStorageDepositReturn?: boolean;
    storageDepositReturnAddress?: Bech32Address;
    hasExpiration?: boolean;
    expirationReturnAddress?: Bech32Address;
    expiresBefore?: SlotIndex;
    expiresAfter?: SlotIndex;
    hasTimelock?: boolean;
    timelockedBefore?: SlotIndex;
    timelockedAfter?: SlotIndex;
    sender?: Bech32Address;
    tag?: HexEncodedString;
}
/**
 * Query parameters for account output requests.
 */
export interface AccountOutputQueryParameters extends CommonOutputQueryParameters {
    address?: Bech32Address;
    issuer?: Bech32Address;
    sender?: Bech32Address;
}
/**
 * Query parameters for anchor output requests.
 */
export interface AnchorOutputQueryParameters extends CommonOutputQueryParameters {
    unlockableByAddress?: Bech32Address;
    stateController?: Bech32Address;
    governor?: Bech32Address;
    issuer?: Bech32Address;
    sender?: Bech32Address;
}
/**
 * Query parameters for delegation output requests.
 */
export interface DelegationOutputQueryParameters extends CommonOutputQueryParameters {
    address?: Bech32Address;
    validator?: Bech32Address;
}
/**
 * Query parameters for foundry output requests.
 */
export interface FoundryOutputQueryParameters extends CommonOutputQueryParameters {
    hasNativeToken?: boolean;
    nativeToken?: TokenId;
    account?: Bech32Address;
}
/**
 * Query parameters for NFT output requests.
 */
export interface NftOutputQueryParameters extends CommonOutputQueryParameters {
    unlockableByAddress?: Bech32Address;
    address?: Bech32Address;
    hasStorageDepositReturn?: boolean;
    storageDepositReturnAddress?: Bech32Address;
    hasExpiration?: boolean;
    expirationReturnAddress?: Bech32Address;
    expiresBefore?: SlotIndex;
    expiresAfter?: SlotIndex;
    hasTimelock?: boolean;
    timelockedBefore?: SlotIndex;
    timelockedAfter?: SlotIndex;
    issuer?: Bech32Address;
    sender?: Bech32Address;
    tag?: HexEncodedString;
}
