syntax = "proto2";
package hw.trezor.messages.ripple;

// Sugar for easier handling in Java
option java_package = "com.satoshilabs.trezor.lib.protobuf";
option java_outer_classname = "TrezorMessageRipple";

/**
 * Request: Address at the specified index
 * @start
 * @next RippleAddress
 */
message RippleGetAddress {
    repeated uint32 address_n = 1;              // BIP-32 path. For compatibility with other wallets, must be m/44'/144'/index'
    optional bool show_display = 2;             // optionally show on display before sending the result
}

/**
 * Response: Address for the given index
 * @end
 */
message RippleAddress {
    optional string address = 1;                // Address in Ripple format (base58 of a pubkey with checksum)
}

/**
 * Request: ask device to sign Ripple transaction
 * @start
 * @next RippleSignedTx
 */
message RippleSignTx {
    repeated uint32 address_n = 1;              // BIP-32 path. For compatibility with other wallets, must be m/44'/144'/index'
    optional uint64 fee = 2;                    // fee (in drops) for the transaction
    optional uint32 flags = 3;                  // transaction flags
    optional uint32 sequence = 4;               // transaction sequence number
    optional uint32 last_ledger_sequence = 5;   // see https://developers.ripple.com/reliable-transaction-submission.html#lastledgersequence
    optional RipplePayment payment = 6;         // Payment transaction type

    /**
     * Payment transaction type
     * - simple A sends money to B
     * - only a subset of fields is supported
     * - see https://developers.ripple.com/payment.html
     */
    message RipplePayment {
        optional uint64 amount = 1;             // only XRP is supported at the moment so this an integer
        optional string destination = 2;        // destination account address
        optional uint32 destination_tag = 3;    // destination tag to identify payments
    }
}

/**
 * Response: signature for transaction
 * @end
 */
message RippleSignedTx {
    optional bytes signature = 1;
    optional bytes serialized_tx = 2;
}
