cdk-mint-rpc 0.18.2

CDK mintd mint management RPC client and server
Documentation
syntax = "proto3";

package cdk_mint_wallet_v1;

// Operator management of the mint's on-chain wallet.
service WalletService {
    // Creates a fresh address for operator deposits. Funds sent to this
    // address are wallet capital and do not satisfy a mint quote.
    rpc CreateDepositAddress(CreateDepositAddressRequest) returns (CreateDepositAddressResponse) {}
    // Returns the wallet balance split by confirmation status.
    rpc GetBalance(GetBalanceRequest) returns (GetBalanceResponse) {}
    // Returns wallet transactions, newest first.
    rpc ListTransactions(ListTransactionsRequest) returns (ListTransactionsResponse) {}
    // Returns addresses that the wallet has revealed, in derivation order.
    rpc ListAddresses(ListAddressesRequest) returns (ListAddressesResponse) {}
}

message CreateDepositAddressRequest {
}

message CreateDepositAddressResponse {
    // Bitcoin address in network-specific display encoding.
    string address = 1;
}

message GetBalanceRequest {
}

message GetBalanceResponse {
    // Confirmed, spendable balance.
    uint64 confirmed_sat = 1;
    // Unconfirmed outputs created by a wallet transaction.
    uint64 trusted_pending_sat = 2;
    // Unconfirmed outputs received from an external wallet.
    uint64 untrusted_pending_sat = 3;
    // Confirmed coinbase outputs that are not mature yet.
    uint64 immature_sat = 4;
    // Confirmed plus trusted-pending balance.
    uint64 trusted_spendable_sat = 5;
    // All value currently visible to the wallet.
    uint64 total_sat = 6;
    // Bitcoin network used by the wallet, e.g. "bitcoin" or "regtest".
    string network = 7;
    // Height of the wallet's latest local chain checkpoint.
    uint32 synced_height = 8;
}

message ListTransactionsRequest {
    // Number of transactions to return. Zero uses the server default. The
    // server rejects values above its maximum.
    uint32 limit = 1;
    // Number of transactions to skip from the newest transaction.
    uint32 offset = 2;
}

message WalletTransaction {
    // Transaction ID in display encoding.
    string txid = 1;
    // Inputs spent by this transaction, in input order.
    repeated WalletTransactionInput inputs = 10;
    // Non-change payment outputs in transaction output order.
    repeated WalletTransactionOutput outputs = 9;
    // Value sent to wallet scripts, including change.
    uint64 received_sat = 2;
    // Value consumed from wallet inputs.
    uint64 sent_sat = 3;
    // Transaction fee when all previous outputs are known.
    optional uint64 fee_sat = 4;
    // Net effect on the wallet balance.
    sint64 balance_delta_sat = 5;
    // Confirmation block height, when confirmed.
    optional uint32 confirmation_height = 6;
    // Confirmation block timestamp, when confirmed.
    optional uint64 confirmation_time = 7;
    // First-seen timestamp, when known for an unconfirmed transaction.
    optional uint64 first_seen = 8;
}

message WalletTransactionInput {
    // Previous outpoint transaction ID in display encoding.
    string txid = 1;
    // Previous outpoint output index.
    uint32 vout = 2;
    // Value of the previous output, when known to the wallet.
    optional uint64 amount_sat = 3;
    // Address of the previous output, when it belongs to the wallet.
    optional string address = 4;
}

message WalletTransactionOutput {
    // Transaction output index.
    uint32 vout = 1;
    // Bitcoin address in network-specific display encoding.
    string address = 2;
    // Output value in satoshis.
    uint64 amount_sat = 3;
    // Quote associated with this output, when managed by the payment backend.
    optional string quote_id = 4;
}

message ListTransactionsResponse {
    // Requested page of transactions.
    repeated WalletTransaction transactions = 1;
    // Total relevant transactions before pagination.
    uint64 total = 2;
}

message ListAddressesRequest {
    // Number of addresses to return. Zero uses the server default. The server
    // rejects values above its maximum.
    uint32 limit = 1;
    // Number of addresses to skip.
    uint32 offset = 2;
}

enum KeychainKind {
    KEYCHAIN_KIND_UNSPECIFIED = 0;
    KEYCHAIN_KIND_EXTERNAL = 1;
    KEYCHAIN_KIND_INTERNAL = 2;
}

message WalletAddress {
    // Bitcoin address in network-specific display encoding.
    string address = 1;
    // Descriptor keychain containing the address.
    KeychainKind keychain = 2;
    // Child derivation index.
    uint32 derivation_index = 3;
    // Whether the address has appeared in a wallet transaction.
    bool used = 4;
    // Total current unspent balance assigned to this address.
    uint64 balance_sat = 5;
    // Confirmed current unspent balance assigned to this address.
    uint64 confirmed_balance_sat = 6;
}

message ListAddressesResponse {
    // Requested page of revealed addresses.
    repeated WalletAddress addresses = 1;
    // Total revealed addresses before pagination.
    uint64 total = 2;
}